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;