mysql主从配置浅析

来源:互联网 发布:windows rt刷win10移动 编辑:程序博客网 时间:2024/05/19 18:13

    对于mysql一直没有深入研究,最近正好有时间,研究完了binlog之后发现和binlog息息相关的有mysql主从配置,便顺便也研究了下,以前一直以为mysql的主从配置是一项特别高深难懂的技术,但是经过学习和研究,发现并没有想象中的那么难,当然初次接触进行配置的时候也遇到了不少问题,特此记下备忘。

    测试环境如下:

    主数据库环境:物理机,操作系统——XP(32位),mysql版本——5.0.51b,内网IP——192.168.1.103

    从数据库环境(一):主数据库物理机上的虚拟机,操作系统——win2003(32位),mysql版本——5.0.51b,内网IP——192.168.120.123

    从数据库环境(二):物理机,操作系统——win7(32位),mysql版本——5.6.11,内网IP——192.168.1.101

    主数据库与从(二)链接同一个无线网络,从(一)的网络模式为nat。

    具体配置过程:

    首先配置主数据库,主数据库必须要配置的只有两项server-id和log-bin,低版本的mysql没有这两项,需要手动书写,在配置文件中找到[mysqld],在下面书写该选项即可

  [mysqld]  server-id=1  log-bin=mysql-bin
    然后我们需要在主数据库中为从数据库创建连接用户,为了保证安全,我们需要对该用户进行权限和连接的主机进行限制,具体命令如下 

从(一)数据库

  mysql>grant replication slave on *.* to 'slave1'@'192.168.1.103' identified by '123456'

从(二)数据库    

  mysql>grant replication slave on *.* to 'slave2'@'192.168.1.101' identified by '123456'
配置完成后重启mysql。

    如果细心的朋友可能会发现,为什么从(一)中链接主机的时候使用的IP是主环境的IP(192.168.1.103),而非从(一)的IP(192.168.120.123)呢,具体原因小编并不是十分清楚,但是有一定可以肯定的是,使用从(一)的IP的时候,在从(一)中链接主数据库是不能链接成功的,可能原因或许跟虚拟机nat的链接方式有关系吧,这里就不做深入研究了,我们只要知道当你使用虚拟机nat方式链接的时候,grant的时候主机设置为主数据库IP即可。如果两者皆为物理机的时候,例如主环境和从(二),那么设置主机的时候需要设置为从(二)的IP。

    接着就是从数据库的配置了,我们先从从(一)数据库看起,从(一)数据库也是低版本的,所以可以直接在mysql的配置文件中书写相关参数

  [mysqld]  server-id=2  master-host=192.168.1.103  master-user=slave1  master-password=123456

配置完成后重启mysql即可。

    对于超过5.1.17版本的mysql配置文件中不在支持master相关参数了,我们只需要在配置文件中书写或者更改server-id,然后在命令行中配置master相关选项

[mysqld]server-id=3

mysql>change master to master_host='192.168.1.103',master_user='slave2',master_password='123456';
mysql>start slave;

    完成之后我们就可以在主库中建立一个数据库和数据表,并插入数据,然后我们就可以在从库中找到相关数据了,至此主从配置算是告一段落了。关于mysql的主从配置,小编只是书写能够使主从数据库生效的简单配置项,如果想要更进一步对主从数据库进行配置,可以百度mysql主从配置相关,小编如果有时间深入研究该问题的话也会及时书写出来。

    特别说明:

   如果主库中已经存在从库中没有的数据库或者数据表,那么主库在操作这些数据表或者数据表的时候,主从同步会出现问题,此时我们可以对主库进行读锁定,把相关数据备份一份至从库,也可以在配置文件中使用binlog-ignore-db(主库使用)或者replicate-ignore-db(从库使用)来忽略那些会影响主从同步的数据库操作,关于如何使用这些参数,使用之后的效果,以及使用之后会带来哪些问题,本文将不再复述,有兴趣的朋友可以自行百度,或者等小编抽空整理出来相关文章。

    配置过程中可能遇到的问题:

    1.配置主数据库和从(一)数据库的时候,遇到"ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO",查找了相关很多文章,终于找到了一个和小编遇到的问题类似的,就是server-id的问题,从数据库在mysql配置文件中设置的server-id明明是2,但是你在连接数据库查看的时候却变为了0,导致start slave无法执行的问题,临时解决办法就是set global server_id = 2,设置完成后再次执行start slave即可,但是当你重启从(一)数据库的时候,server_id又会变为0,对于此问题小编没有深入研究,最后重装mysql后此问题再无出现。

    2.由于从(一)使用的是低版本的mysql,所以可以直接在配置文件中书写master-host等相关数据,但是运用到从(二)就不行了,经过百度,原来mysql从5.1.17版本之后就不在支持配置文件中书写master-host参数,只能通过change master to来设置从数据库。

    3.在给虚拟机的从(一)数据库创建用户的时候(grant)的时候,设置的IP为192.168.120.123的时候无法链接主数据库的mysql,只有设置为192.168.1.103(主数据库IP)的时候才能正常链接,如果使用虚拟机并且以nat方式链接网络的时候需要注意下。

    4.低版本的mysql配置文件中没有server-id,我们需要手动书写,但是高版本的配置文件中有server-id,并且已经打开,我们只需要更改其中的数值即可,不用再自行书写,如果一个配置文件中出现两个不同值的server-id是否会出现问题,小编未进行测试,为了避免出错,再书写server-id的时候首先查看配置文件中是否存在该选项,再进行处理。

0 0
原创粉丝点击