主服务器
vim etc/my.cnf下配置:
[mysqld]
server-id=1 #配置主从数据库ID唯一,最好服务器ip。配置文件中一般都存在.
log-bin=mysql-bin #主从复制是通过二进制文件来进行,所以要开启日志功能(可指定目录c:\log\mysql-log)
read-only=0 #主机,读写都可以
relay-log=relay-bin
relay-log-index=relay-bin-index
#binlog-do-db=itv_basic #需要备份数据,多个写多行
#binlog-ignore-db=test #不需要备份的数据库,多个写多行
#binlog-ignore-db=mysql
mysql>GRANT REPLICATION SLAVE ON *.* to'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替, 如192.168.145.226,加强安全。
重启mysql service mysqld restart
执行:show masterstatus;记录文件及pos数
从服务器
vim etc/my.cnf下配置:
[mysqld]
server-id = 2 #配置主从数据库ID唯一,最好服务器ip。配置文件中一般都存在.
replicate-do-db=itv_basic #只复制某个库
重启mysql service mysqld restart
配置从服务器Slave:
mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能
mysql> show slave status\G //检查从服务器复制功能状态:
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
两个状态为yes就成功了!
主从都是从用innodb引擎,发生延时问题严重,把从库引擎修改为myisam引擎,暂时效果还不错。
为彻底解决该问题,参考淘宝丁奇的一些策略,打算采用Transfer方式,还在分析之中:
1. show variables like'binlog_format'; 查看日志格式 mysql5.6 默认 statement,需要修改主库为row模式
这是从网上搜寻的动态修改方式,也可在配置文件中修改
mysql> SET SESSION binlog_format ='STATEMENT';
mysql> SET SESSION binlog_format ='ROW';
mysql> SET SESSION binlog_format ='MIXED';
mysql> SET GLOBAL binlog_format ='STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format ='MIXED';