MySQL主从同步
Linux 配置路径 /etc/my.cnf; windows 配置路径 mysql/bin/my.ini
2.主-数据库配置
2.1 修改配置文件
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=1 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
2.2 重启MySQL
[windows]
net stop mysql; #停止mysql
net start mysql; #启动myql
[Linux]
systemctl restart mysql; #重新启动mysql
[docker]
docker restart mysql;#重启docker容器
2.3 创建主从同步账户
create USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '用户名'@'%';
FLUSH PRIVILEGES;
#其中 %代表任意ip都可以连接,也可以将其提替换为备用数据库ip
2.4 查看当前二进制日志文件的状态信息
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
3.1 手动同步数据
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 ;
3.2 启动slave
start slave; # 启动slave
3.3查看slave状态
show slave status; # 展示slave当前状态
例:
列名 | 值 |
---|---|
Slave_IO_Running | YES |
Slave_SQL_Running | YES |
当这两个值都为YES时,主从同步配置完成。