1 主从复制
在复杂的业务系统中,有一句sql执行后导致锁表,并且这条sql的的执行时间有比较长,那么此sql执行的期间导致服务不可用,这样就会严重影响用户的体验度。 主从复制中分为「主服务器(master)「和」从服务器(slave)」,「主服务器负责写,而从服务器负责读」,Mysql的主从复制的过程是一个「异步的过程」。 Mysql的主从复制中主要有三个线程:master(binlog dump thread)、slave(I/O thread 、SQL thread),Master一条线程和Slave中的两条线程 master(binlog dump thread)主要负责Master库中有数据更新的时候,会按照binlog格式,将更新的事件类型写入到主库的binlog文件中。Master会创建log dump线程通知Slave主库中存在数据更新,这就是为什么主库的binlog日志一定要开启的原因。 I/O thread线程在Slave中创建,该线程用于请求Master,Master会返回binlog的名称以及当前数据更新的位置、binlog文件位置的副本。然后,将binlog保存在 「relay log(中继日志)」 中,中继日志也是记录数据更新的信息。 SQL线程也是在Slave中创建的,当Slave检测到中继日志有更新,就会将更新的内容同步到Slave数据库中,这样就保证了主从的数据的同步。
主从搭建 主机(master_ip):192168.74.138 从机(slave_ip):192.168.74.150 注意:1.MySQL版本要相同,查看版本 select version(); 2.uuid要不同 show variables like ‘%server_uuid%’;tip:找到/var/lib/mysql文件夹下的auto.cnf文件,修改里面的uuid值,保证各个db的uuid不一样,重启systemctl restart mysqld即可
(1)关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config(永久禁用) SELINUX=disabled
(2)配置主库
vim /etc/my.cnf
[mysqld]
server_id=1
log-bin=mysql-bin
log-bin-index=master-bin.index
重启服务
systemctl restart mysqld
创建一个用于让从数据库连接的用户
mysql> create user 'copy'@'%' identified with mysql_native_password by 'XXXXXXX';
mysql>grant replication slave on *.* to 'copy'@'%';
mysql>flush privileges; 刷新授权信息
再从机上测试,用户的客户端能否正常登录 mysql -h 192.168.74.138 -ucopy -pXXXXXX 获取主节点当前brinary log 文件名和位置(记住)
show master status\G;
(2)配置从库
|