centos mysql8.0主从环境搭建

1:设置master数据库的my.cnf文件

[mysqld]
server-id=1 #数据库唯一ID,主从的标识号绝对不能重复。
log-bin=mysql-bin #开启bin-log,并指定文件目录和文件名前缀
binlog-do-db=liting  #需要同步liting数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。
binlog-ignore-db=mysql #不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。
sync_binlog = 1 #确保binlog日志写入后与硬盘同步
binlog_checksum = none #跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_format = mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复。

2:在master上设置数据同步权限

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;
flush privileges;
执行失败则
权限查看方式
mysql> show grants;
mysql> show grants for repl@‘192.168.0.104’;
1 问题:
当使用 grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ identified by ‘密码’; 时会出现”……near ‘identified by ‘密码” at line 1”这个错误
2 原因:
因为新版的的mysql版本已经将创建账户和赋予权限的方式分开了
3解决办法:
创建账户:create user ‘用户名’@’访问主机’ identified by ‘密码’;
赋予权限:grant 权限列表 on 数据库 to ‘用户名’@’访问主机’ ;(修改权限时在后面加with grant option)

3:查看主服务器master状态(注意File与Position项,从服务器需要这两项参数)

mysql> show master status;
±-----------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±---------±-------------±-----------------±------------------+
| mysql-bin.000007 | 120 | liting | mysql | |
±-----------------±---------±-------------±-----------------±------------------+
1 row in set (0.00 sec)

从库设置

1:(1)设置slave数据库的my.cnf配置文件

[root@master ~]# vim /etc/my.cnf

[mysqld]
server-id=2 #设置从服务器id,必须于主服务器不同
log-bin=mysql-bin #启动MySQ二进制日志系统
replicate-do-db=liting #需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
replicate-ignore-db=mysql #不同步test数据库
slave-skip-errors = all #跳过所有的错误,继续执行复制操作

(2)在slave数据库中导入从master传过来的数据

mysql> CREATE DATABASE liting CHARACTER SET utf8 COLLATE utf8_general_ci; #先创建一个liting空库,否则下面导入数据时会报错说此库不存在。
mysql> use liting;
mysql> source /opt/liting.sql; #导入master中多余的数据。

(3)配置主从同步指令

mysql> stop slave; #执行同步前,要先关闭slave
mysql> change master to master_host=‘192.168.0.103’,master_user=‘repl’,master_password=‘repl123’,master_log_file=‘mysql-bin.000007’,master_log_pos=120;

mysql> start slave;
mysql> show slave status \G;

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.103
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 120
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 279
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: liting
Replicate_Ignore_DB: mysql

Seconds_Behind_Master: 0

如上,当IO和SQL线程的状态均为Yes,则表示主从已实现同步了!

4:测试

参考链接
https://www.cnblogs.com/wade-lt/p/9008058.html
https://blog.csdn.net/vin_1991216/article/details/82632710

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值