MySql 互为主备
MySql 8
首先确保两台mysql 安装成功,有相同数据库,数据库内容目前保证统一
如果存在auto.cnf文件,需要确保auto.cnf文件中的server-uuid不一致。
目前两台服务器
服务器1:10.111.7.83
服务器2:10.111.7.84
在两台服务器的musql配置文件中添加以下配置
[mysqld]
server-id=1 #server的唯一标识
auto_increment_increment=2 #总共有2台主机
auto_increment_offset=1 #这是第1台
log-slave-updates=1 # 共联同步
log-bin = mysql-bin #打开二进制功能,MASTER主服务器必须打开此项
max_binlog_size=1024M #binlog单文件最大值
然后在两台服务器中,互相执行以下操作
登录第一台服务器:
创建同步用到的账户
create user 'repl'@'10.111.7.84' identified with mysql_native_password by 'Root1234.';
#repl为用户名
#10.111.7.84为另一台服务器的ip
#Root1234. 为访问密码
创建好账户后授权
grant replication slave on *.* to 'repl'@'10.111.7.84';
刷新权限
flush privileges;
查看权限是否成功
show grants for 'repl'@'10.111.7.84';
查看状态和二进制文件show master status;
登录第二台mysql服务器执行同步
mysql>change master to
-> master_host='10.111.7.83',
-> master_user='repl',
-> master_password='Root1234.',
-> master_log_file='mysql-bin.000002',
-> master_log_pos=6342845,
-> master_port=23326;
#master_host 为第一台服务器的ip
#master_user 为上面第一台服务器创建的同步账号
#master_password 为上面第一台服务器创建的同步密码
#master_log_file 为第一台服务器show master status执行结果中的File字段内容
#master_log_pos 为第一台服务器show master status执行结果中的Position字段内容
#master_port 为第一台服务器的mysql 端口 默认3306
执行结束后启动slave
start slave;
查看启动是否成功
show slave status\G;
Slave_IO_Running 和 Slave_SQL_Running 为YES表示成功
Last_Error 或者Last_SQL_Error 有内容则表示错误,根据内容提示修改即可
一般都是因为数据不统一,server-uuid一致导致错误
配置好后为服务器1主,服务器2从,需要互为主备的话,只需要在从服务器开始执行上面相同操作即可