安装MySQL,参考安装MySQL5.7
主从复制有2种,一种是基于语句复制,另一种是基于行,5.7版本的默认是基于行复制
- 配置主数据库
修改主数据库配置/etc/my.cnf,不同的linux,配置文件所在位置不同
server-id=1 #设置server-id 数字 唯一,不可重复,
log_bin=master-bin #开启二进制日志
expire_logs_days=10
max_binlog_size=100M
可指定复制哪个库或者哪些表。
进入主数据库的命令行,执行
#创建一个用于复制的账号,账号名和密码自定义,
CREATE USER 'replication'@'%' IDENTIFIED BY 'YourPassword';
#授予这个账号 REPLICATION SLAVE 权限
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
#刷新权限,使其生效
flush privileges;
授权是注意使用MySQL的root账号,还要查看root账号有没有 grant option权限。就是mysql.user表的grant_pri列的值是不是"Y"
查看master状态,记录下二进制文件名file和位置position,在配置从库时使用。
从库会从这个文件的这个位置开始复制。
SHOW MASTER STATUS;
- 从数据库
修改配置文件
server-id=2 #设置server-id 数字 唯一,不可重复
进入从数据库命令行,执行:
CHANGE MASTER TO
MASTER_HOST='0.0.0.0',#主数据库的IP
MASTER_USER='replication',
MASTER_PASSWORD='YourPassword', #在主数据库创建的用于复制的账号和密码
MASTER_LOG_FILE='mysql-bin.000009',
MASTER_LOG_POS=154;# 在主数据库执行 show master status; 的文件和位置
#启动slave
start slave;
#查看slave状态
show slave status;
查看slave状态,看到 slave_io_running 和 slave_sql_running的值 YES,表示主从已经配置成功,可以在主上修改条数据在从库上检验下。
假如想下线slave,执行:
stop slave;
reset slave;
reset slave all;