Mysql主从搭建
Jakcy
数据库
2021-11-16
112
#####1、配置Master主服务器
1)在Master MySQL上创建一个用户‘repl’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
create user repl; -- 创建新用户
-- repl用户必须具有REPLICATION SLAVE权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' identified by 'repl';
2)配置文件修改 vi /etc/my.cnf
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index
# 双主配置
# 中继日志执行之后将变化写入自己的binlog文件,即从库从主库复制的文件默认不会写入自己的binlog文件,需要开启后才生效;
# 通常此从库同时作为主库时,即链式复制时,需要开启此参数;
# 默认参数为0,表示OFF, 设置为1表示ON,参数可直接带OFF或ON.
log-slave-updates = 1
# 双主配置
# 做双主时,每台数据库都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突;解决方案是让每个数据库的自增主键不连续;
# 参数auto_increment_increment表示自增值,一般有n台主库,自增值就采用n;
# auto_increment_offset表示起始序号,一般offset不超过自增值,且各主库的自增值不一样.
auto_increment_increment = 2
auto_increment_offset = 1
3)重启
service mysqld restart
4)查看状态
-- 查看状态
show master status
-- 查看连接状态
show processlist
#####2、配置Slave从服务器
- 配置文件修改
vi /etc/my.cnf
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
vi /var/lib/mysql/auto.cnf
# 不可与主服务一致,可重新随机生成一个
server-uuid=cac4b204-1272-21eb-a5d2-080027b490c2
2)设置主服务器
change master to
master_host = '10.10.10.50', -- 主IP
master_user = 'repl', -- 用户名
master_password = 'repl', -- 密码
master_port = 3306, -- 端口
master_log_file = 'mysql-bin.000001',-- 主库日志文件
master_log_pos = 120; -- 日志文件读取位置
- 启动主从
-- 启动主从
start slave
-- 查看状态
show slave status
-- 这两参数都显示Yes标识配置成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#####3、注意
- 主从只能mysql全库进行,不能单独为某一个库设置
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES