配置master库
-
编辑配置文件:
vim /etc/my.cnf
[mysqld]
server-id=1 # 主库标识
log-bin=mysql-bin # 同步日志名称
binlog-do-db=test_db # 指定同步数据库 -
登录数据库并授权
mysql> grant replication slave on . to ‘slave’@‘从库IP’ identified by ‘12345678’; # 常见用于主从同步的账号
mysql> flush privileges; # 刷新用户权限 -
重启master的mysql服务:systemctl restart mysqld
-
登录数据库并查看同步日志的名称以及文件位置
mysql> show master status;
配置slave库
-
编辑配置文件:
vim /etc/my.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
relay-log=relay-log-bin # 中继日志文件名
relay-log-index=slave-relay-bin.index # 中继日志的索引文件名 -
重启slave的mysql服务:systemctl restart mysqld
-
登录数据库并配置
mysql> change master to master_host=‘主库IP’, master_port=3306, master_user=‘slave’, master_password=‘12345678’, master_log_file=‘mysql-bin.000005’, master_log_pos=382678;
mysql> start slave;
mysql> show slave status\G;
若状态中出现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes 则表明主从同步成功
备注
为了保证master-slave数据一致,需在主库上加锁,使其只有只读权限,待复制库完成后再解锁
mysql> flush tables with read lock; # 加锁,使其只有只读权限
mysql> unlock tables; # 解锁库
mysqldump testdb -uroot -p123456 --add-drop-table | mysql -h 192.168.1.22 newdb -u root -p123456; # 复制库