MySQL(MariaDB)主从复制 配置

2018-02-08 10:26:15来源:oschina作者:學無止境人点击

分享

查看服务器A是否已经安装Mysql数据库。


[[email protected]~]#rpm-aq|grepmysql


若无消息显示,则进行Mysql安装。这里跳过安装;


同样的,对服务器B和服务器C安装Mysql数据库,此处略去。接下来,开始进行数据库主从复制的配置。 1.主数据库配置 修改主数据库配置文件my.cnf。


[[email protected]~]#vi/etc/my.cnf


新增如下标注内容:


[mysqld]


max_connections=1000


binlog-ignore-db=mysql#新增


binlog-ignore-db=information_schema#新增


log-bin=mysql-bin#新增


server-id=1#新增


datadir=/var/lib/mysql


socket=/var/lib/mysql/mysql.sock


user=mysql


#Disablingsymbolic-linksisrecommendedtopreventassortedsecurityrisks


symbolic-links=0

[mysqld_safe]


log-error=/var/log/mysqld.log


pid-file=/var/run/mysqld/mysqld.pid


关于新增的几项配置,其中


binlog-ignore-db 用来指定忽略同步的数据库,未指定的默认都进行主从复制。


log-bin 指定数据库操作日志,主从复制的过程本质就是从数据库在主数据库读取该日志,并且再执行一次。


server-id 只要满足在数据库集群中不重复即可且必须不能重复 保存退出,重启Mysqld服务,使配置生效。修改到配置文件,最好都重启该配置相关的程序或服务。

[[email protected]~]#servicemysqldrestart


[[email protected]~]#mysql-uroot-p*********


查看主数据库master状态。


mysql>showmasterstatus/G


***************************1.row***************************


File:mysql-bin.000015


Position:106


Binlog_Do_DB:


Binlog_Ignore_DB:mysql,information_schema


可以看出,Binlog_Ignore_DB显示的信息就是刚才我们在配置文件所配置的信息。此外,还有两个重要的参数需要记下:mysql-bin.000015和106。从数据库就是根据这两个参数,完成主从复制,以达到数据同步的效果。 从数据库要读取主数据库日志文件,需要主数据开放授权用户。


mysql>GRANTREPLICATIONSLAVEON*.*to'slave'@'1XX.XX.XX.182'identifiedby'root'


mysql>GRANTREPLICATIONSLAVEON*.*to'slave1'@'1XX.XX.XX.183'identifiedby'root'


进行从数据库配置时,将使用到这两个授权用户。


出于数据安全性考虑,Mysql提供访问权限控制,若以主机的方式远程访问数据库,需要开启相应权限。


mysql>GRANTALLPRIVILEGESON*.*TO'root'@'1XX.XX.XX.181'IDENTIFIEDBY'root'WITHGRANTOPTION;


mysql>FLUSHPRIVILEGES;


mysql>GRANTALLPRIVILEGESON*.*TO'root'@'1XX.XX.XX.182'IDENTIFIEDBY'root'WITHGRANTOPTION;


mysql>FLUSHPRIVILEGES;


mysql>GRANTALLPRIVILEGESON*.*TO'root'@'1XX.XX.XX.183'IDENTIFIEDBY'root'WITHGRANTOPTION;


mysql>FLUSHPRIVILEGES;


最后,还需要修改iptables,对数据库端口3306放行。


[[email protected]~]#vi/etc/sysconfig/iptables


新增如下语句:


#放行Mysql端口


-AINPUT-mstate--stateNEW-mtcp-ptcp--dport3306-jACCEPT


至此,完成主数据库配置。接下来,让我们进行从数据库配置。


(ps:可以选择直接关闭防火墙,线下环境测试使用,不搞过于复杂)

2.从数据库配置 从数据库配置相对主数据配置相对简单,主要包括配置文件修改和主从复制设置。现以服务器B为例进行说明。 修改从数据库配置文件。


[mysqld]


max_connections=1000


server-id=2#新增


datadir=/var/lib/mysql


socket=/var/lib/mysql/mysql.sock


user=mysql


#Disablingsymbolic-linksisrecommendedtopreventassortedsecurityrisks


symbolic-links=0

[mysqld_safe]


log-error=/var/log/mysqld.log


pid-file=/var/run/mysqld/mysqld.pid


设置主从数据库同步点。


mysql>changemastertomaster_host='1XX.XX.XX.181',master_user='slave',master_password='root',master_log_file='mysql-bin.000015',master_log_pos=106;


还记得mysql-bin.000015和106这两个参数吗?就是我们在主数据库查看master状态所显示的信息。 启动主从复制。


mysql>slavestart;


查询slave状态。


mysql>showslavestatus/G


***************************1.row***************************


Slave_IO_State:Waitingformastertosendevent


Master_Host:1XX.XX.XX.181


Master_User:slave


Master_Port:3306


Connect_Retry:60


Master_Log_File:mysql-bin.000015


Read_Master_Log_Pos:106


Relay_Log_File:mysqld-relay-bin.000005


Relay_Log_Pos:251


Relay_Master_Log_File:mysql-bin.000015


Slave_IO_Running:Yes


Slave_SQL_Running:Yes


Replicate_Do_DB:


Replicate_Ignore_DB:


Replicate_Do_Table:


Replicate_Ignore_Table:


Replicate_Wild_Do_Table:


Replicate_Wild_Ignore_Table:


Last_Errno:0


Last_Error:


Skip_Counter:0


Exec_Master_Log_Pos:106


Relay_Log_Space:758


Until_Condition:None


Until_Log_File:


Until_Log_Pos:0


Master_SSL_Allowed:No


Master_SSL_CA_File:


Master_SSL_CA_Path:


Master_SSL_Cert:


Master_SSL_Cipher:


Master_SSL_Key:


Seconds_Behind_Master:0


Master_SSL_Verify_Server_Cert:No


Last_IO_Errno:0


Last_IO_Error:


Last_SQL_Errno:0


Last_SQL_Error:


只有当Slave_IO_Running和Slave_SQL_Running都显示Yes时,才表示主从复制配置成功。否则失败,检查上述配置过程。 服务器C从数据库的配置过程类似,此处略去。


主从复制验证


首先,在主数据建立一个demo数据库,看两个从数据库是否会自动进行复制。 在服务器A登录主数据库,查看现有数据库。


mysql>showdatabases;


+--------------------+


|Database|


+--------------------+


|information_schema|


|mysql|


|test|


+--------------------+


现在,新增一个测试数据库demo。


mysql>createdatabasedemo;


接下来,分别登录服务器B和服务器C的从数据库,查询数据库。


mysql>showdatabases;


+--------------------+


|Database|


+--------------------+


|information_schema|


|demo|


|mysql|


|test|


+--------------------+


可以发现,当主数据库发生改动,从数据库会相应同步,并且同步的过程是异步进行的。因此,可以验证我们配置的主从复制已经生效。


ps:多主多从的配置迟点补充

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台