>데이터 베이스 >MySQL 튜토리얼 >MySQL主从服务器链式复制配置(ubuntu)_MySQL

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-06-01 13:35:02781검색

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
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.