在现有MHA架构中添加slave

来源:互联网 发布:第五元素 知乎 编辑:程序博客网 时间:2024/04/28 07:06

部分参照http://www.percona.com/doc/percona-xtrabackup/2.1/howtos/setting_up_replication.html

利用三台新机器示例(跟3.2中配置没有联系):

Master

Slave

Slave

10.19.90.210:3308

10.19.90.208:3308

10.19.90.210:3388

1.1   利用master做备份,搭建主从复制

1.1.1   在master上做一个全量备份

1、   备份

在master上执行./innobackupex --user=root --password=dp--socket=/mysqldp/data/mysql.sock --defaults-file=~/etc/my.cnf/mysqldp/data_bak/

执行结束后需要看到


这一步会在/mysqldp/data_bak/目录下生成MySQL data的备份,备份是以时间戳命名的文件:


2、   为了让快照保持一致,需要prepare

./innobackupex --user=root --password=dp--socket=/mysqldp/data/mysql.sock --defaults-file=~/etc/my.cnf --apply-log/mysqldp/data_bak/2014-06-06_09-01-58/

执行结束后,同样需要看到

1.1.2    将备份数据拷贝到slave上

1.        Master上的备份数据scp到slave上

Master上执行:

scp -r 2014-06-06_09-01-58 root@10.19.90.208:/mysqldp/

2.        将slave的data目录备份

Slave上执行(必须保证slave此时已经关闭):

mv /mysqldp/data /mysqldp/data_bak

3.        将master上的备份数据移到slave data目录的位置

Slave上执行:

mv /mysqldp/2014-06-06_09-01-58 /mysqldp/data

4.        保证此时slave有权限访问data目录

Slave上执行:

Chown –R mysqldp.mysqldp /mysqldp/data

1.1.3   配置master服务器

①    赋replication slave权限

在master上执行:

grant replication slave on *.* to 'repl'@'10.19.90.208'identified by 'repl';

②    Slave上确认是否能用repl用户连接到master

Slave上执行:

mysql -urepl -prepl -h10.19.90.210 -P3308

连接上之后查看当前权限,执行show grants;

1.1.4   配置slave服务器

修改salve的server-id

与其他MySQL服务器的server-id不同即可

1.1.5    开始复制

1)        启动slave

mysqld_safe --defaults-file=~/etc/my.cnf &

2)        在slave的data目录下查看xtrabackup_binlog_info文件

3)        在slave上change master

执行:

change master to master_host='10.19.90.210',master_port=3308,master_user='repl',master_password='repl',master_log_file='mysql-bin.000004',master_log_pos=568276203;

4)        Slave 上执行startslave,开启复制。

1.1.6   检查slave状态

Slave上执行show slavestatus\G

 

出现两个Yes代表复制成功,Seconds_Behind_Master表示主从之间的延迟,在备份结束到slave开始运行过程中master可能已经有其他操作,所以会出现延迟。

1.2    利用slave做备份,添加slave机器

1.2.1    在slave上做备份

1、  备份

在slave(10.19.90.208:3308)上执行:./innobackupex --user=root --password=dp--socket=/mysqldp/data/mysql.sock --defaults-file=~/etc/my.cnf--slave-info /mysqldp/bak

执行结束后需要看到

2、  为了让快照保持一致,需要prepare

在slave(10.19.90.208:3308)上执行:./innobackupex--user=root --password=dp --socket=/mysqldp/data/mysql.sock--defaults-file=~/etc/my.cnf --apply-log --use-memory=2G/mysqldp/bak/2014-06-06_10-49-40/

1.2.2    将slave上备份的数据scp到新slave

I           、在slave(10.19.90.208:3308)上执行:

scp -r 2014-06-06_10-49-40root@10.19.90.210:/mysqldp/mysqldp1/

II         、将new slave(10.19.90.210:3388)上的data目录备份(必须保证new slave已经关闭):

执行mv data data_bak

III       、将new slave上的备份文件2014-06-06_10-49-40重命名为data

mv 2014-06-06_10-49-40 data

IV       、new slave上data目录赋权限

chown -R mysqldp1.mysqldp1 /mysqldp/mysqldp1/data

1.2.3    Master给new slavere赋replication slave权限

grant replication slave on *.* to'repl'@'10.19.90.210' identified by 'repl';

1.2.4     修改new slave的配置文件

修改server-id=3

1.2.5    开始复制

a)        启动slave

mysqld_safe --defaults-file=~/etc/my.cnf &

b)        查看new slave的data目录下的xtrabackup_slave_info文件:

c)        在new slave上执行

change master tomaster_host='10.19.90.210',master_port=3308,master_user='repl',master_password='repl',master_log_file='mysql-bin.000004',master_log_pos=759176683;

d)        启动slave

New slave上执行start slave

1.2.6    查看new slave状态

执行show slave status\G

 

 

0 0