这里写自定义目录标题
linux mysql 主从复制
步骤一:安装MySQL
sudo apt-get update
sudo apt-get install mysql-server
步骤二:配置主从复制
配置主服务器数据库
在主服务器上,我们需要修改MySQL的配置文件my.cnf,添加以下内容:
server-id = 1
log-bin = mysql-bin
binlog-do-db = your_database_name
auto_increment_offset = 1
auto_increment_increment = 2
server-id 唯一标识
log-bin 启用二进制日志
binlog-do-db 为指定复制的数据库,如果有多个库重复使用该属性
auto_increment_offset 和 auto_increment_increment 解决自增主键冲突。这样主库的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID了
重启数据库
sudo systemctl restart mysqld
配置从服务器数据库
server-id = 2
log-bin = mysql-bin
replicate-do-db = your_database_name
auto_increment_offset = 2
auto_increment_increment = 2
2, 4, 6, 8, …等偶数ID
重启数据库
sudo systemctl restart mysqld
步骤三:配置主从复制关系
登录数据库操作
sudo mysql -u root -p
在主服务器上,我们需要创建一个用于从服务器同步的账号,并授权该账号的权限:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
然后查看主服务器的状态信息:
SHOW MASTER STATUS;
记住File和Position的值,稍后在从服务器上会用到。
在从服务器上,连接主服务器,并配置主从复制关系:
CHANGE MASTER TO MASTER_HOST='服务器ip', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107, MASTER_PORT=3001;
其中MASTER_LOG_FILE就是上述File,MASTER_LOG_POS对应Position的值,MASTER_PORT 主服务器数据库端口
然后启动从服务器的复制:
这是在MySQL 5.x版本中使用的命令。
启动
START SLAVE;
停止
STOP SLAVE;
是在MySQL 8.0及更高版本中使用的命令
启动
START REPLICA;
停止
STOP REPLICA;
步骤四:检查主从复制状态
通过以下命令可以查看主从服务器的复制状态:
SHOW SLAVE STATUS \G
如果有错误请看错误日志