mysql8.0主从复制

mysql主从复制作用:数据库备份、读写分离、高可用、集群
原理:二进制sql执行文件(binlog)。主机有写的操作修改了数据。会把二进制sql日志文件给从机同步数据

主机:有读(select)和写(insert、update、delete、create)的权限
备(从)机:有读的权限    (使用mycat来禁止从机人为作写操作)

mysql主从复制步骤
主服务器配置:
vi /etc/my.cnf 新增以下内容
server_id=177 ###服务器id
log-bin=mysql-bin ###开启日志文件
binlog-ignore-db=mysql #不参与主从的数据库名,不参与主从复制的数据库名mysql
binlog-do-db = db_store #需要进行binlog日志记录的数据库,多个请另起一行设置binlog_do_db=需要同步的数据库名称,不写全部数据库都备份(binlog日志记录作用是给从服务器进行同步数据)

重启mysql服务
systemctl restart mysqld
主服务器给从服务器账号授权
进入mysql
mysql -u root -p
密码
GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'Qq123!@#'; 一般不用root帐号 随意账号 给从服务器对应
注意:在mysql8.0不能直接用上面的。要先创建再授权
create user 'mysync'@'%' identified WITH mysql_native_password by 'Qq123!@#'; (创建用户)
GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' ; (用户授权)
flush privileges; 刷新
登录主服务器的mysql,查询master的状态
show master status;


mysql8.0主从复制_第1张图片
image.png

File如果结果为null,则主服务器my.cnf没有配置好.

从服务器操作:
将安装好mysql的服务器再克隆一台。要改mac地址
1、因为克隆的mysql会有相同的uuid 要修改mysql的uuid使之不相同
vi /var/lib/mysql/auto.cnf 修改uuid,长度要相同
没修好的话会报

image.png

如果不是克隆的虚拟机,忽略上面的修改操作
接下来继续从服务器的操作
vi /etc/my.cnf 新增以下内容
server_id=178 ###服务器id
log-bin=mysql-bin ###开启日志文件
replicate-do-db= db_store ###需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
重启mysql服务
systemctl restart mysqld

进入mysql
mysql -u root -p
密码

stop slave
master_host表示主服务器ip
change master to master_host='192.168.219.128',master_user='mysync',master_password='Qq123!@#',
master_log_file='mysql-bin.000002',master_log_pos=343;

start slave

检查从服务器复制功能状态
SHOW SLAVE STATUS \G
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
完成!


mysql8.0主从复制_第2张图片
image.png

读写分离(分库):主从两台数据库服务器。主数据库能写,从数据库只能读
mysql本身没有实现读写分离的功能,需要用到mycat中间件

开一台服务器作mycat 数据库中间件配置,能实现反向代理,数据库服务器通过添加mycat账号来进行权限分配。
使用mycat账号和mycat当前服务器的ip地址进行登陆,就能实现读写分离,主要与主数据库关联
在mycat数据库上做操作,从数据库如果设置了这个数据库的同步,也会进行同步
mycat默认端口号8066

你可能感兴趣的:(mysql8.0主从复制)