环境ubuntu 16.04
主配置
1.编辑主MySQL配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
更改server-id,它位于[mysqld]段。这个数字在MySQL主从服务器群中必须唯一,这是区别MySQL的一个标识
server-id = 128
# 找到log_bin一行,取消注释,它是mysql的二进制log文件
log_bin = /var/log/mysql/mysql-bin.log
# 最后,要设置需要复制的数据库
binlog_do_db = cnblogs
2、配置从数据库用户名密码,授权
CREATE USER 'slave'@'112.32.152.32' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'112.32.152.32';
flush privileges;
3、切换到数据库 cnblogs
use cnblogs;
4.为了防止改变,锁定数据库:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
输出结果;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 773 | cnblogs | | |
+------------------+----------+--------------+------------------+-------------------+
记住Position对应的数字(773)和File(mysql-bin.000001),在配置从MySQL服务器时需要用到。
导出数据库数据,如果使用mysqldump会造成数据库自动解锁,需要新开一个终端,执行完毕解锁退出;
UNLOCK TABLES;
quit;
主MySQL配置完成。
从配置
1、设置server-id
server-id = 244
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = cnblogs
relay-log = /var/log/mysql/mysql-relay-bin.log
relay-log是添加的,默认并没有这一行。更改完,保存退出。
2、重启MySQL服务,
3、指定主服务器ip:再次进入MySQL命令行,执行:
CHANGE MASTER TO MASTER_HOST='112.32.152.32',MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=773;
4、开启从服务
start slave;
5、查看从服务状态
show slave statusG;
主从同步异常,关闭从服务,手动从上个位置同步;