环境说明:
mysql主服务器:server3 172.25.56.3
mysql从服务器:server4 172.25.56.4;server5 172.25.56.5
安装软件包:
分别在注服务器server3中、从服务器server4、server5中
创建目录,将解压得到的软件包放在所创建的目录下:
以主服务器为例:从服务器做相同配置操作:
进入mysql-5.7.17目录下,安装所需要的软件包
启动服务,并修改数据库的密码
/etc/init.d/mysqld start
修改数据库密码,首先输入我们上面所得到的root的密码,然后输入新密码
主从复制原理图:
复制原理:
Mysql中有一种日志叫做bin日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL语句(insert,update,delete,ALTER TABLE,grant等等)。
主从复制的原理其实就是把主服务器上的BIN日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据即相同
配置:
在主服务器server3上:
更改配置文件内容,重启服务
进入mysql,创建用户,查看起始点
创建一个数据库并写入数据
在服务器server4上
在server4上测试主服务器上所建立的用户是否可以登陆mysql
登陆成功!
进入数据库,设置从数据库,并开启slave
开启后查看slave状态
注:显示Slave_IO_Running: Yes和Slave_SQL_Running: Yes表示slave启动正常
在主服务器上再添加数据,查看从服务器是否复制主服务器的数据,测试复制情况
注服务器:
从服务器测试:
从服务器上,查看得到了主服务器所添加的数据,即主从复制成功!
在主服务器server3上:
修改配置文件,加入如下内容,重启服务
在从服务器server4上,首先修改配置文件,和上面server3的修改相同,然后进入mysql,停止slave
再次开启slave,查看状态
测试:
在主服务器上删除数据,在从服务器上查看,是否更新同步数据
主服务器:
从服务器:
server4上查看,更新同步数据,即gtid主从复制数据成功!
主:server3 两从:server4、server5
server3还是主服务器
原先server4作为server3的从服务器的配置不用改变
配置server5作为server4的从服务器
进入server4的数据库,创建用户
server5上测试用户是否可以登陆
登陆成功!
server4上,修改配置文件并重启服务:
server5作为从服务器和上面一主一从中的从服务器的配置相同
在复制之前server5,server6,serevr7上面的数据要保持一致,所以将server4上的数据库拷贝出来,复制给server5
server5上编辑拷贝到的数据库,将数据导入到server5的数据库中
在server5上,进入数据库,查看信息
server5上开启slave
到此一主两从配置成功,进行测试:
在主服务器server3数据库中添加数据进行测试:
server3中添加数据:
server4同步数据:
server5同步数据:
一主两从的复制成功!
只在slave上进行,这里在server4上配置并行复制。
首先查看线程processlist
修改server4的mysql配置文件,添加如下的内容,原先的配置不变,重启服务,实现并行
进入mysql,再次查看processlist
DATABASE:默认值,基于库的并行复制方式
LOGICAL_CLOCK:基于组提交的并行复制方式
开启MTS功能后,务必将参数master_info_repostitory设置为TABLE,这样性能可以有50%~80%的提升,因为并行复制开启后对于元master.info这个文件的更新将会大幅提升,资源的竞争也会变大,将master_info_repository设置为TABLE,来减小这部分的开销
半同步复制模式必须在主服务器和从服务器同时中开启,否则将会默认为异步复制模式,半同步复制需要安装插件如下;
主服务器server3上需要安装插件semisync_master.so
从服务器server4上需要安装插件semisync_slave.so
到此主从服务器之间的的半同步复制就配置完成,进行测试
首先在master上查看以下参数
在slave上关闭io_thread
在主数据库中插入数据,会等待10s返回结果
这个时候退回到异步复制,slave上还没有接受到数据,查看如下:
再次回到master上查看相关状态
再次开启slave上的io_thread,查看数据是否同步,发现数据进行了同步
到此半同步复制成功!