Categories

Tags

mysql复制

在主库服务器上操作

配置主库:

vi /etc/my.cnf

在[mysqld]节点下添加

log_bin = mysql-bin  #必须
server_id = 10       #必须

保存重启

service mysqld restart

在主库上面建立帐户并授权从库

mysql -uroot -pjsyx2016!

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%' IDENTIFIED BY 'hao123';

repl是账号
hao123是密码

检查主库状态

show master status;


----------------------------
在从库服务器上操作

配置从库:

vi /etc/my.cnf

在[mysqld]节点下添加

log_bin = mysql-bin  #必须
server_id = 2  #必须
relay_log = /var/lib/mysql/mysql-relay-bin  #不是必须
log_slave_updates = 1  #不是必须
read_only = 1  #不是必须

保存重启

service mysqld restart
mysql -uroot -pjsyx2016!
#配置连接主库的参数
CHANGE MASTER TO MASTER_HOST='192.168.1.222',
MASTER_USER='repl',
MASTER_PASSWORD='hao123',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1986;

上面192.168.1.222是主库服务器的ip,MASTER_LOG_FILE的值是主库的File,MASTER_LOG_POS的值是主库的Position

启动从库的复制功能

start slave;

至此主库的数据一有改动,从库就自动更新

检查从库状态

SHOW SLAVE STATUS\G;

注意:执行SHOW SLAVE STATUS\G; 有时会提示错误
Last_SQL_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
主库和备库分别查看uuid是否相同

cat /data/mysql/auto.cnf

相同的话就修改其中一个库的uuid的值

vi  /data/mysql/auto.cnf

保存退出,重启即可

service mysqld restart

mysql5.6版本以上规定uuid不能相同,我的环境是在虚拟机里面,从库服务器是通过直接复制主库服务器而来的,所以uuid一样