MySql同步与延迟同步
Mysql同步
一 Mysql主服务器上操作
1 开启服务器上的log_bin功能
# vim/etc/my.cnf
增加一下两行
log_bin=mysql-bin
server_id=1
2 重启mysql
# service mysqldrestart
3 登录mysql建立账户并授权slave功能
#mysql –uroot –p
mysql> grant replication slave on *.* to ‘repl‘@‘%‘ identified by‘repl‘;
mysql> flush privileges;
4 使用mysqldump命令对mysql服务器数据库备份
# ln -s/data/mysql/bin/mysqldump /usr/bin/
#mysqldump -uroot -p --single-transaction --all-databases --master-data =1 > /data/mysql/data/mysqlbackup20170727.sql
5 将主库服务器备份的sql文件传送到从库指定目录
#scp /data/mysql/data/mysqlbackup20170727.sql root@19.171.34.158:/ data/mysql/data
二 mysql从库服务器上的操作
1 登录mysql服务器停止slave同步操作
#mysql –uroot –p
mysql> stop slave;
2 修改从库的配置文件
#vim /etc/my.cnf
增加以下两行
log_bin=mysql-bin
server_id=2
3 重启mysql服务器
# service mysqld restart
4 将主库的备份文件导入从库中
#mysql –uroot –p < /data/mysql/data/mysqlbackup20170727.sql
5 配置从服务器与主服务器的同步
#head –n 30 /data/mysql/data/mysqlbackup20170727.sql
mysql主库binlog文件的名字及位置记录在备份的sql文件中
如下图红色框中所示:
#mysql –uroot –p
mysql>change master tomaster_host=‘10.44.30.153‘,master_user=‘replll‘,master_password=‘mAME33888888e333CrqEqSnt8W‘,master_log_file=‘mysql-bin.000065‘,master_log_pos=760539299;
命令中参数解释:
master_host mysql主服务器所在的IP地址
master_user mysql主服务授权从库slave功能的用户
master_password mysql主服务器授权从库salve功能用户的密码
master_log_file mysql主服务binlog名称
master_log_pos mysql主服务binlog中执行到的位置。
备注:master_log_file与 master_log_pos 为上图中红色框中对应的值。
6 启动从服务器的slave
mysql> start slave;
7 检查slave服务器的状态
mysql>show slave status\G; 如下图所示:红色框中两项都为yes表示主从同步成功。
二、mysql延迟同步
目的是 防止主库的误操作造成从库也被误操作。
#mysql –uroot –p
mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_DELAY = 1800;单位为秒
mysql>start slave;
mysql>show slave status \G;
如下图所示: 红色框中参数的意义:
Master_Log_File 主库mysql的binlog文件名
Read_Master_Log_Pos 读取主库mysql的binlog文件的位置
Exec_Master_Log_Pos 从库执行主库mysql的binlog文件的位置
Seconds_Behind_Master 从库延迟主库同步的时间单位秒
SQL_Delay 设置从库服务器相较于主库服务器的延迟同步时间