如何配置两个MySQL数据库之间的主从同步功能?

如何配置两个MySQL数据库之间的主从同步功能?,第1张

IP的设置:A主机 IP:10.10.0.119;Mask:255.255.0.0;B主机 IP:10.10.8.112;Mask:255.255.0.0

在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态。

为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。最终以两台主机可以相互ping通为佳。

3.2 配置A主(master) B从(slave)模式;3.2.1 配置A 为master。

增加一个用户同步使用的帐号:

GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’

GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’。

赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。

增加一个数据库作为同步数据库:create database test

创建一个表结构:create table mytest (username varchar(20),password varchar(20))

修改配置文件:修改A的/etc/my.cnf文件。

在my.cnf配置项中加入下面配置:

server-id = 1 #Server标识

log-bin

binlog-do-db=test #指定需要日志的数据库

重起数据库服务:

service mysqld restart

查看server-id:

show variable like ‘server_id’。

主从复制理论上支持无穷大的从库个数,实际情况下,受服务器带宽和读写能力的影响

请参考mysql官方手册的建议:

理论上,通过使用单个主服务器/多从服务器设置,可以通过添加更多的从服务器来扩充系统,直到用完网络带宽,或者你的更新负载已经增长到主服务器不能处理的点。

在获得的收益开始吃平之前,为了确定可以有多少从服务器,以及可以将你的站点的性能提高多少,需要知道查询模式,并且要通过基准测试并根据经验确定一个典型的主服务器和从服务器中的读取(每秒钟读取量,或者max_reads)吞吐量和写(max_writes)吞吐量的关系。通过一个假设的带有复制的系统,本例给出了一个非常简单的计算结果。

假设系统负载包括10%的写和90%的读取,并且我们通过基准测试确定max_reads是1200 –2 × max_writes。换句话说,如果没有写 *** 作,系统每秒可以进行1,200次读取 *** 作,平均写 *** 作是平均读 *** 作所用时间的两倍,并且关系是线性的。我们假定主服务器和每个从服务器具有相同的性能,并且我们有一个主服务器和N个从服务器。那么,对于每个服务器(主服务器或从服务器),我们有:

reads = 1200 – 2 × writes

reads = 9 × writes / (N + 1) (读取是分离的, 但是写入所有服务器)

9 × writes / (N + 1) + 2 × writes = 1200

writes = 1200 / (2 + 9/(N+1))

最后的等式表明了N个从服务器的最大写 *** 作数,假设最大可能的读取速率是每分钟1,200次,读 *** 作与写 *** 作的比率是9。

如上分析可以得到下面的结论:

· 如果N = 0(这表明没有复制),系统每秒可以处理大约1200/11 = 109个写 *** 作。

· 如果N = 1,每秒得到184个写 *** 作。

· 如果N = 8,每秒得到400个写 *** 作。

· 如果N = 17,每秒得到480个写 *** 作。

配置主的配置文件

vi /etc/my.cnf

创建复制用户并授权给从服务器

grant replication slave on *.* to 'rpl'@'192.168.162.130' identified by '123456'

重启主服务器的MySQL  /etc/init.d/mysqld restart

查看master信息: 进入MySQL  show master status \G

修改从库配置文件

vi /etc/my.cnf

重启从服务器MySQL,进入MySQL

指定主服务器IP等信息

change master to master_host='192.168.162.128 ',master_user='rpl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=647

启动slave  :start slave

查看slave状态:show slave status \G

报错Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDsthese UUIDs must be different for replication to work

意思是主和从必须都要有不同的uuid,我们分别去查看下主从的uuid

主:server-uuid=4e6c5a78-1e9a-11e7-8c65-000c29426312

查看从库uuid  从库uuid:server-uuid=4e6c5a78-1e9a-11e7-8c65-000c29426312

可以看出是真的一样,原因在于 我是先安装了一个虚拟机并装好MySQL,后面有复制了一遍,作为从服务器,所以导致了这个UUID是一样的。

接下来就是解决这个UUID问题,将从库上的auto.cnf 备份下。然后重启从库。再看下从库的UUID

[auto]

server-uuid=2e9c834a-1eb2-11e7-864b-000c2928472e

再次查看从库状态

从库状态正常了

11.测试主从是否正常

主库上创建一个测试库,test :create database test

创建测试表:

create table test.test(

id int,

username varchar(10)

)ENGINE='innodb'

12.查看从库: 

正常,说明主从搭建成功


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7410352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存