MySQL主从同步
1. 主从同步的定义
主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。
因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。
2.mysql 主从同步作用:
1.读写分离
2.分流,减轻服务器压力
3. 数据备份
80% 查询,20% 写入,
3.使用主从同步的好处:
(1) 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
(2)提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
(3) 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能
4. 主从同步的机制
Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。
在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。
每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句,这样意味着不同的从服务器可以分别执行同一个二进制日志的不同部分,并且从服务器可以随时连接或者中断和服务器的连接。
主服务器和每一个从服务器都必须配置一个唯一的ID号(在my.cnf文件的[mysqld]模块下有一个server-id配置项),另外,每一个从服务器还需要通过CHANGE MASTER TO语句来配置它要连接的主服务器的ip地址,
日志文件名称和该日志里面的位置(这些信息存储在主服务器的数据库里)
3.主从同步流程:
1.主和从库的数据保持一致
做法:备份主库,然后在从库恢复
2. mysql 任何操作都可以写到日志文件中(默认关闭,需要开启);从库可以实时读取主库的日志文件,然后将主库的操作也执行一遍,从而达到同步
3.从库访问主库日志,需要登录主库,从而需要让主库为从库分配账号密码(专用于主从同步),slave
配置mysql主服务器(MASTER)
0)查看mysql的启动状态
systemctl status mysqld.service
1)修改/etc/my.cnf配置文件
server-id = 11 //mysql数据的唯一标示(不能重复)
binlog-format=ROW //选择row模式
log-slave-updates=true //允许连级复制 (增加)
log-bin=master-bin //二进制文件名(修改)
binlog_format=mixed //二进制文件
2) 重启MySQL服务
systemctl stop mysqld.service
ststemctl start mysqld.service
3)创建主从复制的用户(mysql8.0)
create user 'nxznxz'@'%' identified WITH mysql_native_password by 'Pass1234!'; grant replication slave on *.* to 'nxznxz'@'%';
4)注意需要开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports
4、 配置从服务器
1) 在/etc/my.cnf中修改以下内容
[root@centos3 ~]# vim /etc/my.cnf
server-id = 22 //不能与其他实例重复
log-bin=master-bin //二进制日志文件名 修改
relay-log=relay-log-bin //复制过来的二进制文件名,增加
relay-log-index=slave-relay-bin.index //中继日志存放的文件名称,增加
注意server-id不能与主服务器相同,但是从服务器要相同。
2) 重启mysql服务
3) 登录mysql,配置同步(按照主服务器结果更改下面命令中
master_file和master_log_pos参数)
change master to master_host='192.168.1.131',master_user='root', master_password='Pass1234!',master_log_file='master-bin.000001',master_log_pos=467;
4)启动同步
5) 查看slave状态,确保以下两个值为YES
5、 验证主从复制效果
1) 在主服务器上新建数据库“IT”
2) 在从服务器上查看数据库,如果和主服务器相同,说明主从复制成功。
从库多线程复制:
https://blog.csdn.net/punk_lover/article/details/78424896
https://blog.csdn.net/demonson/article/details/80774899
附一个一键安装mysql8.0的脚本:
#!/bin/bash ############ 一键安装 MySQL 8.0 脚本 ############ # Updates:可以在安装的时候更改root初始密码 # ####################### END ###################### function install(){ #先把多余的卸载了 unload cd ~ U_mysqlUrl=https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm #下载MySQL8.0的rpm包 if [ -e "./mysql80-community-release-el7-1.noarch.rpm" ] then echo -e "