- Linux 配置路径 /etc/my.cnf; windows 配置路径 mysql/bin/my.ini
-
- [mysqld]
- log-bin=mysql-bin #[必须]启用二进制日志
- server-id=1 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
-
- [windows]
- net stop mysql; #停止mysql
- net start mysql; #启动myql
-
- [Linux]
- systemctl restart mysql; #重新启动mysql
-
- [docker]
- docker restart mysql;#重启docker容器
-
- create USER '用户名'@'%' IDENTIFIED BY '密码';
- GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '用户名'@'%';
- FLUSH PRIVILEGES;
- #其中 %代表任意ip都可以连接,也可以将其提替换为备用数据库ip
-
- show master status; #查看当前二进制日志文件的状态信息
-
例:
名称 | 值 | 描述 |
---|---|---|
File | mysql-bin.000002 | 二进制日志文件名称 |
Position | 3411 | 当前日志大小(指针位置) |
Binlog_Do_DB | basetest | 数据库名称 |
- [mysqld]
- server-id=2 #[必须]不能跟主数据库相同
- log-bin=mysql-slave-bin
- relay-log=mysql-relay
-
- CHANGE MASTER TO
- MASTER_HOST='主数据库ip(master ip)',
- MASTER_USER='主数据用户名 #用于同步的用户,建议额外建立一个账户不要使用root',
- MASTER_PASSWORD='密码',
- MASTER_PORT=3306, # 主数据库端口
- MASTER_LOG_FILE='mysql-bin.000002',
- MASTER_LOG_POS=120 ;
-
- start slave; # 启动slave
-
- show slave status; # 展示slave当前状态
-
例:
列名 | 值 |
---|---|
Slave_IO_Running | YES |
Slave_SQL_Running | YES |
当这两个值都为YES时,主从同步配置完成。
在主从数据库都执行一次下面的命令后,重新依次执行2.4、3.1、 3.2 、3.3
- reset master;
-
将主从数据库都上锁后再进行同步,同步配置完成后解锁
- # 上锁
- lock tables;
- # 解锁
- unlock tables;
-