mysql 主从配置
主机
cat /etc/my.cnf
mysqld
1. 唯一标识(主库必须设为1,从库不能重复)
server-id = 1
2. 开启二进制日志(主从复制核心,记录所有数据变更)
log-bin = mysql-bin
3. binlog格式(推荐ROW,精准复制行级变更)
binlog_format = ROW
4. 同步时忽略mysql系统库(可选,减少binlog体积)
binlog-ignore-db = mysql
5. 基础配置(确保正常运行)
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user = mysql
mysqld_safe
log-error = /var/log/mysqld.log
pid-file = /var/lib/mysql/19c01.pid
client
socket = /var/lib/mysql/mysql.sock
从机
mysqld
1. 唯一标识(必须≠主库的1,设为2)
server-id = 2
2. 开启中继日志(从库复制核心,接收主库binlog)
relay-log = mysql-relay-bin
3. 禁用从库的binlog(从库仅同步,不生成自己的binlog,可选)
log-bin = OFF
4. 从库只读(防止误写入,super权限用户仍可写)
read_only = 1
5. 基础配置
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user = mysql
mysqld_safe
log-error = /var/log/mysqld.log
pid-file = /var/lib/mysql/19c02.pid
client
socket = /var/lib/mysql/mysql.sock
登录主机:
创建复制用户(允许从库19c02访问,替换为19c02的IP)
CREATE USER 'repl'@'192.168.158.132' IDENTIFIED BY 'root';
授予复制权限(仅允许复制,无其他权限)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.158.132';
刷新权限
FLUSH PRIVILEGES;
查看主库状态(关键!记录File和Position值,决定下面MASTER_LOG_POS的值; )
SHOW MASTER STATUS;
登录从机
停止原有复制(首次配置可忽略,防止报错)
STOP SLAVE;
配置主库连接信息(替换<>内的内容)
CHANGE MASTER TO
MASTER_HOST='192.168.158.131',
MASTER_USER='repl',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=660;
启动从库复制进程
START SLAVE;
查看从库复制状态(核心!验证同步是否正常)
SHOW SLAVE STATUS\G;