在上一篇博文中,提到使用xtrabackup工具来实现热备,这篇我通过mysqldump来实现在线添加从机



一.目前的基本环境:



 主DB:192.168.1.101



 从DB1:192.168.1.102



 从DB2:192.168.1.100(准备在线添加做为从机的mysql数据库)



 数据库版本:mysql 5.1.61(select  version())



 服务器版本:red hat linux 6



       注:目前主从正常(show slave status\G),同步的数据库为 login



              同步的表为innodb引擎的表



       注:思路是备份,可是用mysqldump备份会锁表,如果数据量很大的话,线上环境肯定不允许使用mysqldump备份



              所以,我们采用的xtrabackup来进行在线热备,至于,它的原理,请各位自行google



二.部署实例:



1.主DB,线上数据正常写入的同时我实施备份



# 使用mysqldump进行备份,使用--master-data参数:此值有1和2,大家可以自己google以下
[root@client101 ~]# mysqldump -uroot -pkongzhong --opt --hex-blob --single_transaction -R --default-character-set=utf8 --master-data=2 login>/tmp/login.sql
# 再开一个端口,插入数据
mysql> insert into a select * from a;
# 备份完毕后,我们查看刚才的备份发现,master的日志文件和pos号
[root@client101 ~]# grep -i  "change master"  /tmp/login.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-101-bin.000007', MASTER_LOG_POS=107;
# 我刚才在备份的时候也插入数据的,我再看看主上实际的日志文件和pos号
mysql> show master status;
+----------------------+----------+--------------+------------------+
| File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| mysql-101-bin.000007 |      532 |              |                  |
+----------------------+----------+--------------+------------------+
# 现在我们利用备份还原,利用备份的里的pos号,看能否追上主



2.备份完成后,将数据传送到需要作为新从机的DB server(192.168.1.100)上用于在上面进行还原



[root@client101 ~]# scp /tmp/login.sql 192.168.1.100:/tmp



3.从DB2上,使用刚才的备份,并用于恢复



[root@client100 tmp]# mysql -uroot -pkongzhong  login </tmp/login.sql
# 修改配置文件:/etc/my.cnf
replicate-wild-do-table=login.%
innodb_file_per_table=1
report-host=192.168.1.100
innodb_lock_wait_timeout=1
expire_logs_days= 3
max_binlog_size= 100M
server-id=100
# 重新启动数据库
[root@client103 mysql]# /etc/init.d/mysqld restart



4.将从DB2的主机指向主DB1



# 备份文件里有备份时的master日志文件和pos号
[root@client100 ~]# grep -i  "change master"  /tmp/login.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-101-bin.000007', MASTER_LOG_POS=107;
# 建立主从关系
mysql> change master to master_host='192.168.1.101',
    -> master_user='slave',
    -> master_password='slave',
    -> master_log_file='mysql-101-bin.000007',
    -> master_log_pos=107;
# 开启同步
mysql> start slave;
# 查看同步状态
mysql> show slave status\G;



5.此时如果都为yes,则主从则建立完毕!发现数据已经追上从机了



  大家可以自行测试!







转载于:https://blog.51cto.com/634871/1364141