mysql系列3-mysql主从同步
2016-02-26 16:40
447 查看
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
主从复制的应用场景:
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中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复