Mysql 5.6主从同步(和5.1是有不同的):
和5.1不同主要有两处(都在从部分):
1、指定master部分不能写到/etc/my.cnf里了,得在mysql命令里敲
2、启动/停止slave命令为:start/stop/reset slave (5.1是slave在前)
主(和5.1一样):
# mkdir /var/log/mysql/logs
# chown -R mysql:mysql /var/log/mysql/logs
# mysql -u root -p123456
> grant replication slave on *.* to 'ming’@’192.168.1.3’ identified by '123456';
>flush privileges;
# vi /etc/my.cnf (在[mysqld]下)
#bind-address = 127.0.0.1(ubuntu上一定要注释掉该句,否则从mysql会无法连接主mysql的,redhat上没有该项)
server-id = 1 (数据库服务器都有唯一的server-id,通常主服务器制定为1)
log-bin=/var/log/mysql/logs/log
relay_log=/var/log/mysql/logs/relaylog
read-only = 0 (主mysql读写都可以)
:wq
# service mysqld restart
# mysql -u root -p123456
> show master status;
或
> show master status \G;
从:
注:从mysql上要先建和主mysql上一样的数据库名,并将主mysql上的数据库导入到从mysql中,导入的数据库备份时间最好是主mysql搭建主模式时的时间,否则同步时会报错的(解决办法是删除从mysql更新的部分,可根据报错提示,也可将主mysql的log删掉,重启mysql重新生成log)
# mkdir /var/log/mysql/logs
# chown -R mysql:mysql /var/log/mysql/logs
# vi /etc/my.cnf (在[mysqld]下)
server-id = 2 (原为server-id=1,当然设成非1的其它数字也可以)
log-bin=/var/log/mysql/logs/log (指定mysql二进制日志路径)
relay_log=/var/log/mysql/logs/relaylog
read-only=1 (只允许读操作)
# service mysqld restart
# mysql -u root -p123456
> change master to master_host='192.168.1.2',master_user='ming',master_password='123456';
> slave start;
> show slave status \G;
如果以下两项都为yes即是从机配置成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果主从同时操作一般不会下面的问题,但如果主mysql运行了一段时间(已配好主模式),这时从同步时需从主mysql搭建主模式时的数据库备份导进从mysql,如果从mysql数据库导的较新就会出现下面报错
从mysql上如果报错:Error 'Duplicate entry '368' for key 'PRIMARY'' on query.
解决办法:
通过图像化管理删数据库报错的内容吧(即更新的部分),命令行删除太累
也可将主mysql的log删掉,重启mysql重新生成log