mysql主从复制(mysql双机热备的实现)

mysql主从复制(mysql双机热备的实现)
抗原表位
Mysql数据库没有增量备份的机制,当数据量太⼤的时候备份是⼀个很⼤的问题。还好mysql数据库提供了⼀种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份的数据库中。实现mysql数据库的热备份。
要想实现双机的热备,⾸先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都⾼于3.2。还有⼀个基本的原则就是作为从数据库的数据版本可以⾼于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
当然要实现mysql双机热备,除了mysql本⾝⾃带的REPLICATION功能可以实现外,也可以⽤Heartbeat这个开源软件来实现。不过本⽂主要还是讲如何⽤mysql⾃带的REPLICATION来实现mysql双机热备的功能。
1. 准备服务器
由于Mysql不同版本之间的(⼆进制⽇志)binlog格式可能会不太⼀样,因此最好的搭配组合是主(Master)服务器的Mysql版本和从(Slave)服务器版本相同或者更低,主服务器的版本肯定不能⾼于从服务器版本。
本次我⽤于测试的两台服务器版本都是Mysql-5.5.17。
2. Mysql 建⽴主-从服务器双机热备配置步骤
2.1环境描述
A服务器(主服务器Master):59.151.15.36
B服务器(从服务器Slave):218.206.70.146
主从服务器的Mysql版本皆为5.5.17
Linux环境下
将主服务器需要同步的数据库内容进⾏备份⼀份,上传到从服务器上,保证始初时两服务器中数据库内容⼀致。
不过这⾥说明下,由于我是利⽤Mysql在安装后就有的数据库test进⾏测试的,所以两台服务器⾥⾯是没有建⽴表的,只不分别在test⾥⾯建⽴了同样的⼀张空表tb_mobile;
Sql语句如下:
mysql> create table tb_mobile( mobile VARCHAR(20) comment'⼿机号码', time timestamp DEFAULT now() comment'时间' );
2.2 主服务器Master配置
2.2.1 创建同步⽤户
进⼊mysql操作界⾯,在主服务器上为从服务器建⽴⼀个连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进⾏双机热备的功能操作。
操作指令如下:
mysql> grant replication slave on *.* to 'replicate'@'218.206.70.146' identified by '123456';
张少川mysql> flush privileges;
cnf创建好同步连接帐户后,我们可以通过在从服务器(Slave)上⽤replicat帐户对主服务器(Master)数据库进⾏访问下,看下是否能连接成功。
在从服务器(Slave)上输⼊如下指令:
[root@YD146 ~]# mysql -h59.151.15.36 -ureplicate -p123456
如果出现下⾯的结果,则表⽰能登录成功,说明可以对这两台服务器进⾏双机热备进⾏操作。
2.2.2 修改mysql配置⽂件
如果上⾯的准备⼯作做好,那边我们就可以进⾏对mysql配置⽂件进⾏修改了,⾸先到mysql配置所有在⽬录,⼀般在安装好mysql服务后,都会将配置⽂件复制⼀⼀份出来放到/ect⽬录下⾯,并且配置⽂件命名为:myf。即配置⽂件准确⽬录为/etc/myf
(Linux下⽤rpm包安装的MySQL是不会安装/etc/myf⽂件的,
⾄于为什么没有这个⽂件⽽MySQL却也能正常启动和作⽤,在点有两个说法,
第⼀种说法,myf只是MySQL启动时的⼀个参数⽂件,可以没有它,这时MySQL会⽤内置的默认参数启动,
第⼆种说法,MySQL在启动时⾃动使⽤/usr/share/mysql⽬录下的my-mediumf⽂件,这种说法仅限于rpm包安装的MySQL,
解决⽅法,只需要复制⼀个/usr/share/mysql⽬录下的my-mediumf⽂件到/etc⽬录,并改名为myf即可。)
到配置⽂件myf打开后,在[mysqld]下修改即可:
[mysqld]
server-id = 1        //唯⼀id
log-bin=mysql-bin              //其中这两⾏是本来就有的,可以不⽤动,添加下⾯两⾏即可.指定⽇志⽂件
binlog-do-db = test    //记录⽇志的数据库
binlog-ignore-db = mysql    //不记录⽇志的数据库
2.2.3 重启mysql服务
修改完配置⽂件后,保存后,重启⼀下mysql服务,如果成功则没问题。
2.2.4 查看主服务器状态
进⼊mysql服务后,可通过指令查看Master状态,输⼊如下指令:
注意看⾥⾯的参数,特别前⾯两个File和Position,在从服务器(Slave)配置主从关系会有⽤到的。
注:这⾥使⽤了锁表,⽬的是为了产⽣环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。
2.3 从服务器Slave配置
2.3.1修改配置⽂件
因为这⾥⾯是以主-从⽅式实现mysql双机热备的,所以在从服务器就不⽤在建⽴同步帐户了,直接打开配置⽂件myf进⾏修改即可,道理还是同修改主服务器上的⼀样,只不过需要修改的参数不⼀样⽽已。如下:
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = test
replicate-ignore-db = mysql,information_schema,performance_schema
2.3.2重启mysql服务
修改完配置⽂件后,保存后,重启⼀下mysql服务,如果成功则没问题。
2.3.3⽤change mster 语句指定同步位置
这步是最关键的⼀步了,在进⼊mysql操作界⾯后,输⼊如下指令:
mysql>stop slave;          //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。
mysql>change master to
>master_host='59.151.15.36',master_user='replicate',master_password='123456',
> master_log_file=' mysql-bin.000016 ',master_log_pos=107;
注:master_log_file, master_log_pos由主服务器(Master)查出的状态值中确定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不⽀持在配置⽂
件中指定主服务器相关选项。
遇到的问题,如果按上⾯步骤之后还出现如下情况:
则要重新设置slave。指令如下
mysql>stop slave;
mysql>reset slave;
之后停⽌slave线程重新开始。成功后,则可以开启slave线程了。
mysql>start slave;
2.3.4查看从服务器(Slave)状态
⽤如下指令进⾏查看
mysql> show slave status\G;
查看下⾯两项值均为Yes,即表⽰设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
2.4 测试同步
之前开始已经说过了在数据库test只有⼀个表tb_mobile没有数据,我们可以先查看下两服务器的数据库是否有数据:
Master:59.151.15.36
Slave:218.206.70.146
好了,现在可以在Master服务器中插⼊数据看下是否能同步。
Master:59.151.15.36
Slave:218.206.70.146
可以从上⾯两个截图上看出,在Master服务器上进⾏插⼊的数据在Slave服务器可以查到,这就表⽰双机热备配置成功了。
3. Mysql 建⽴主-主服务器双机热备配置步骤
服务器还是⽤回现在这两台服务器
3.1创建同步⽤户
同时在主从服务器建⽴⼀个连接帐户,该帐户必须授予REPLIATION SLAVE权限。这⾥因为服务器A和服务器B互为主从,所以都要分别建⽴⼀个同步⽤户。
服务器A:
mysql> grant replication slave on *.* to 'replicate'@'218.206.70.146' identified by '123456';
mysql> flush privileges;
服务器B:
mysql> grant replication slave on *.* to 'replicate'@'59.151.15.36' identified by '123456';
mysql> flush privileges;
3.2修改配置⽂件myf
服务器A
[mysqld]
server-id = 1
log-bin=mysql-bin
binlog-do-db = test
binlog-ignore-db = mysql
#主-主形式需要多添加的部分
log-slave-updates
sync_binlog = 1
auto_increment_offset = 1
auto_increment_increment = 2
replicate-do-db = test
中国选举治理网replicate-ignore-db = mysql,information_schema
服务器B:
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = test
replicate-ignore-db = mysql,information_schema,performance_schema
#主-主形式需要多添加的部分
binlog-do-db = test
binlog-ignore-db = mysql
log-slave-updates
sync_binlog = 1
auto_increment_offset = 2
auto_increment_increment = 2
3.3分别重启A服务器和B服务器上的mysql服务
重启服务器⽅式和上⾯的⼀样,这⾥就不做讲解了。
围观改变中国
3.4分别查A服务器和B服务器作为主服务器的状态
服务器A:
服务器B:
3.5分别在A服务器和B服务器上⽤change master to 指定同步位置
服务器A:
mysql>change master to
>master_host='218.206.70.146',master_user='replicate',master_password='123456', > master_log_file=' mysql-bin.000011 ',master_log_pos=497;
服务器B:
mysql>change master to
>master_host='59.151.15.36',master_user='replicate',master_password='123456',
> master_log_file=' mysql-bin.000016 ',master_log_pos=107;
3.6 分别在A和B服务器上重启从服务线程
mysql>start slave;
3.7 分别在A和B服务器上查看从服务器状态
mysql>show slave status\G;
查看下⾯两项值均为Yes,即表⽰设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3.8 测试主-主同步例⼦
测试服务器A:
在服务器A上插⼊⼀条语句如下图所⽰:
之后在服务器B上查看是否同步如下图所⽰:
测试服务器B:
在服务器B上插⼊⼀条语句如下图所⽰:
然后在从服务器A上查看是否有同步数据如下图所⽰:
最后从结果可以看出主-主形式的双机热备是能成功实现的。
4. 配置参数说明
Server-id
ID值唯⼀的标识了复制集中的主从服务器,因此它们必须各不相同。Master_id必须为1到232-1之间的⼀个正整数值,slave_id值必须为2到232-1之间的⼀个正整数值。
Log-bin
表⽰打开binlog,打开该选项才可以通过I/O写到Slave的relay-log,也是可以进⾏replication的前提。
Binlog-do-db
表⽰需要记录⼆进制⽇志的数据库。如果有多个数据可以⽤逗号分隔,或者使⽤多个binlog-do-dg选项。
Binglog-ingore-db
表⽰不需要记录⼆进制⽇志的数据库,如果有多个数据库可⽤逗号分隔,或者使⽤多binglog-ignore-db选项。
Replicate-do-db
表⽰需要同步的数据库,如果有多个数据可⽤逗号分隔,或者使⽤多个replicate-do-db选项。
Replicate-ignore-db
重庆南开中学课间操表⽰不需要同步的数据库,如果有多个数据库可⽤逗号分隔,或者使⽤多个replicate-ignore-db选项。
Master-connect-retry
master-connect-retry=n表⽰从服务器与主服务器的连接没有成功,则等待n秒(s)后再进⾏管理⽅式(默认设置是60s)。如果从服务器存在mater.info⽂件,它将忽略些选项。
Log-slave-updates
配置从库上的更新操作是否写⼊⼆进制⽂件,如果这台从库,还要做其他从库的主库,那么就需要打这个参数,以便从库的从库能够进⾏⽇志同步。

本文发布于:2024-09-21 22:46:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/718928.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   数据库   热备   配置
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议