mysql主从复制配置
MySQL的主从复制是一种常见的数据库高可用性和数据备份方案,通过将主数据库(Master)的变更同步到从数据库(Slave),实现数据的实时或近实时复制。
1.mysql安装
- pass
2.配置主服务器(Master)
2.1my.cnf
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = your_database_name # 只复制特定数据库
binlog_format = ROW # 可选,推荐使用ROW格式,数据一致性更好
or
[mysqld]
server-id = 1
log-bin = mysql-bin
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 1
slave-skip-errors = all
2.2重启 MySQL 服务:
sudo service mysql restart
2.3创建复制用户:
1 | CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; |
or
1 | grant replication slave,replication client on *.* to xxx@'100.7.32.%' identified by "xxx"; |
此新建sql,也需要在从节点执行。
2.4获取二进制日志文件名和位置:
mysql> flush tables with read lock;
show master status;
SHOW MASTER STATUS;
unlock tables; //解锁
从节点从这个pos位开始复制数据,之前的数据要dump导入从库。
3.配置从服务器(Slave)
3.1 my.cnf
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
or
[mysqld]
server-id = 2 # 唯一标识,不能与主库重复
relay_log = relay-log # 可选,指定中继日志
read_only = 1 # 可选,防止从库被写入
or
[mysqld]
server-id = 2
log-bin = mysql-bin
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2
auto-increment-offset = 2
slave-skip-errors = all
3.2重启 MySQL 服务
sudo service mysql restart
3.3设置从服务器连接到主服务器:
1 | CHANGE MASTER TO |
3.4启动复制:
START SLAVE;
3.5验证复制状态
检查从服务器状态:
SHOW SLAVE STATUS\G;
show slave status \G;
确保Slave_IO_Running和Slave_SQL_Running 都显示为Yes
4. 常见问题排查
- 权限问题:确保复制用户有足够的权限。
- 网络问题:检查主从服务器之间的网络连接。
- 配置问题:确保 server-id 唯一且正确配置。