mysql的异步复制
2016-07-12 17:03
387 查看
mysql的复制
mysql从3.23版开始提供复制的功能,所谓的复制是将主数据的DDL和DML操作通过二进制日志传到复制服务器(也叫从库)上,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库保持数据同步。
mysql复制的优点
1:如果主库出现问题,可以快速切换到从库提供服务
2:可以在从库上执行查询操作,降低主库的访问压力
3:可以在从库上执行备份,以避免影响备份期间主库的服务
mysql的复制是异步的
mysql的复制通过3个线程实现的,其中Binlog Dump线程跑在主库上,IO线程和SQL线程跑在从库上。
首先从库创建IO线程,并向主库发起请求
主库收到请求,创建Binlog Dump线程读取数据库事件并发送给IO线程
IO线程取到事件数据后更新到从库的中继日志Relay log中
最后从库SQL线程读取中继日志Relay log更新的数据库事件并应用
异步复制步骤
1:创建一个用户,并授予REPLICATION SLAVE权限,
grant replication slave on *.* to '用户名' @ 'ip' identified by '密码';
2:在主数据库修改my.cnf,开启BINLOG,并设置server-id,修改这两个参数需要重新启动数据库才能生效。
[mysqld]
lob-bin = /home/mysql/log/mysql-bin.log
server-id = 1
3:在主数据库上,执行锁,防止有新的数据更新,以便获取一个快照
mysql>flush tables with read lock;
4:然后得到主库上当前的二进制日志名和偏移量,
mysql>show master status;
5:生成主库的备份,有很多方式,我这里直接生成tar包
6:主库备份完,马上执行解锁
mysql>unlock tables;
7:将主库备份的tar包拷贝到从库的数据目录下,解压
8:修改从库的my.cnf,增加server-id
[mysqld]
server-id=2
9:在从库上,使用--skip-slave-start启动从库,这样不会立即启动,有时间让我们配置
./bin/mysqld_safe --skip-slave-start & [1] 8768
Starting myslsd daemon with database from /home/mysql/data
10:对从库服务器做修改,指定主库的复制的信息
mysql>CHANGE MASTER TO
->MASTER_HOST='master_host_ip'
->MASTER_POST='master_host_post'
->MASTER_USER='第一步创建的用户'
->MASTER_PASSWORD='第一步创建的密码'
->MASTER_LOG_FILE='第四步查询到的file' 例如我的是mysql-bin.000008
->MASTER_LOG_POS='第四步查询到的position' 例如我的是14274500
11:在从库上启动slave线程;
mysql>start slave;
mysql从3.23版开始提供复制的功能,所谓的复制是将主数据的DDL和DML操作通过二进制日志传到复制服务器(也叫从库)上,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库保持数据同步。
mysql复制的优点
1:如果主库出现问题,可以快速切换到从库提供服务
2:可以在从库上执行查询操作,降低主库的访问压力
3:可以在从库上执行备份,以避免影响备份期间主库的服务
mysql的复制是异步的
mysql的复制通过3个线程实现的,其中Binlog Dump线程跑在主库上,IO线程和SQL线程跑在从库上。
首先从库创建IO线程,并向主库发起请求
主库收到请求,创建Binlog Dump线程读取数据库事件并发送给IO线程
IO线程取到事件数据后更新到从库的中继日志Relay log中
最后从库SQL线程读取中继日志Relay log更新的数据库事件并应用
异步复制步骤
1:创建一个用户,并授予REPLICATION SLAVE权限,
grant replication slave on *.* to '用户名' @ 'ip' identified by '密码';
2:在主数据库修改my.cnf,开启BINLOG,并设置server-id,修改这两个参数需要重新启动数据库才能生效。
[mysqld]
lob-bin = /home/mysql/log/mysql-bin.log
server-id = 1
3:在主数据库上,执行锁,防止有新的数据更新,以便获取一个快照
mysql>flush tables with read lock;
4:然后得到主库上当前的二进制日志名和偏移量,
mysql>show master status;
5:生成主库的备份,有很多方式,我这里直接生成tar包
6:主库备份完,马上执行解锁
mysql>unlock tables;
7:将主库备份的tar包拷贝到从库的数据目录下,解压
8:修改从库的my.cnf,增加server-id
[mysqld]
server-id=2
9:在从库上,使用--skip-slave-start启动从库,这样不会立即启动,有时间让我们配置
./bin/mysqld_safe --skip-slave-start & [1] 8768
Starting myslsd daemon with database from /home/mysql/data
10:对从库服务器做修改,指定主库的复制的信息
mysql>CHANGE MASTER TO
->MASTER_HOST='master_host_ip'
->MASTER_POST='master_host_post'
->MASTER_USER='第一步创建的用户'
->MASTER_PASSWORD='第一步创建的密码'
->MASTER_LOG_FILE='第四步查询到的file' 例如我的是mysql-bin.000008
->MASTER_LOG_POS='第四步查询到的position' 例如我的是14274500
11:在从库上启动slave线程;
mysql>start slave;
相关文章推荐
- 【mysql学习笔记】-explain的用法
- 【mysql学习笔记】-索引
- 树莓派下的基本命令和安装MySQL vim等
- mysql 批量修改表前缀
- 【greenplum】将greenplum 数据导入mysql 数据库工具
- Mysql中的like模糊查询
- mysql UNIX时间戳与日期的相互转换 查询表信息
- SQL语句整合,本记录适用于Mysql
- mysql数据库中文乱码解决
- mysql数据库忘记root密码修改方法
- MYSQL常用命令总结
- MySQL的一个表最多可以有多少个字段
- 当主机存储性能不是很理想时,对mysql io 的一些优化
- Mysql Where使用列别名
- mysqldump参数详细说明
- MySQL查看和修改数据库存储目录
- MySQL查看和修改数据库存储目录
- MySQL 5.6.26 误删ibdata恢复
- 把iphonebenchmark获取的数据存入MySQL数据库
- mysql sql语句的用法