mysql系列3-mysql主从同步

mysql支持单向,双向,链式级联,实时和异步的复制。一台充当主服务器,其它一台或多台充当从服务器。大多数应用mysql主从同步都是异步方式的,不是实时的。

主从复制的应用场景:

1,主从服务器互为备份

2,主从服务器读写分离分担压力

解决主从同步master宕机由于异步复制导致主从不一致的方法

1,人工或脚本将master的binlog推送给一台从库重新执行一次

2,应用程序对主从进行双写,不依赖同步

3,应用程序记录最近操作的日志,通过日志去恢复

4,利用工具将异步改为实时,例如半同步复制

读写分离生产环境一般使用应用来选择数据源完成

不使用mysql-proxy,amoeba等


mysql主从同步的步骤:

1,master打开binlog: my.cnf下的log-bin配置,可指定名字,通常指定名字使用机器名

2,指定master,slave的server-id. 最好取有意义的数字且两者不相同

3,master上添加一个同步帐户并grant授权。刷新权限flush privileges

      GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '123456';

4,在master上先加锁不允许写(flush table with read lock),再show master status获取当前binlog文件位置。

5,新开窗口在master上dump,可加--master-data=2获取第四步binlog的点,可加-X加锁,省略第4步

6,dump完之后解锁master: unlock tables;使用-X加锁时不需要手动解锁。

7,将备份数据导入到slave中

8,从库执行change master…  再start slave(启动从库的io和sql线程),change master的信息会放在master-info文件中

      change master to master_host='192.168.xxx.xxx',master_user='mysync',master_password='123456', master_log_file='mysql-bin.000004',master_log_pos=308; 

      如果第5步--master-data=1,change语句会被写在导出的备份文件中,恢复到从库时会自动执行

9,show slave status查看从库的两个线程的工作状态检查是否OK

      Slave_IO_Running: Yes    //此状态必须YES
      Slave_SQL_Running: Yes     //此状态必须YES


你可能感兴趣的:(mysql)