Home >Database >Mysql Tutorial >MySQL主从服务器链式复制配置(ubuntu)_MySQL

MySQL主从服务器链式复制配置(ubuntu)_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:35:02779browse

Ubuntu

bitsCN.com

MySQL主从服务器链式复制配置(ubuntu)

 

服务器结构:

A、B、C三台服务器; 其中A为新闻数据源,A为B的Master,B为A的Slave,同时也是C的Master;

B服务器从A复制部分数据,C备份A的所有数据;

 

配置:

Master A的配置

 

sudo vi /etc/mysql/my.cnf

 

删除以下参数前的注释并修改

server-id       = 1 //分配server-id

log-bin         = master-bin //默认mysql-bin,可以不修改

log-bin-index   = master-bin.index  //非必须

bind-adress     = 0.0.0.0 //默认127.0.0.1 不修改可能导致无法访问

 

修改系统防火墙使B服务器可以访问3306端口,(详查ufw命令)  

重启mysql:

sudo /init.d/mysql restart

 

通过语句:

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO user@'ip B' IDENTIFIED BY 'password';

 

给B服务器建立一个可以连接到A的帐号

进入mysql,通过:

show master status;

查看A的状态,记录下file的位置和postion的参数

Slave B的配置

 

sudo vi /etc/mysql/my.cnf

 

server-id       = 2

log-bin         = slave-bin

bind-address    = 0.0.0.0

relay-log-index =  slave-relay-bin.index //非必须

relay-log       = slave-relay-bin   //非必须

 

添加参数:

log-slave-updates = 1   

//通常情况,从服务器从主服务器接收到的更新不记入它的二进制日志。

//该选项告诉从服务器将其SQL线程执行的更新记入到从服务器自己的二进制日志。

 

replicate_wild_do_table = copy_db.copy_table //表示需要复制的库中的表,可以善用%

replicate_wild_ignore_table = ignore_db.ignore_table //不复制的表

 

至于为什么不使用replicate_do_db和replicate_ignore_db参数,

是为了方式跨库更新时出错,如果能确保不会跨库更新可考虑

 

重启mysql,进入本机mysql

 

执行以下语句:

CHANGE MASTER TO MASTER_HOST='server A ip',

MASTER_PORT=3306,

MASTER_USER='user',

MASTER_PASSWORD='password',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=0;

 

//MASTER_LOG_FILE和MASTER_LOG_POS对应A中的file位置和postion参数,表示开始复制的bin文件和位置

 

start slave;    //启动Slave

show slave status;  //查看Slave_IO_State参数,如果是Waiting for master to send event,则正常

//正常状态下Slave_IO_Running与Slave_SQL_Running均为yes

 

//如不能正常链接,根据Slave_IO_State,Slave_IO_Running,Slave_SQL_Running,Last_IO_Error

//等参数查找失败原因

 

通过:

show master status;

命令记录file位置和postion参数;

 

给C服务器分配一个帐号用于同步;

方法参照A,防火墙设置参照A;

Slave C的配置

 

sudo vi /etc/mysql/my.cnf

server-id  = 3

relay-log-index =  slave-relay-bin.index //非必须

relay-log       = slave-relay-bin   //非必须

 

通过CHANGE MASTER TO语句来修改master的参数,参照B的配置;

通过

show slave status;

检查C的状态,参照B

 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn