码迷,mamicode.com
首页 > 数据库 > 详细

创建一个已经存在数据的MySQL复制

时间:2015-10-25 14:50:43      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

1.配置master库
必须开启二级制日志和分配唯一的server id
·如果没设置server-id或将其设置为0,master节点会拒绝slave的连接
·建议在master节点设置innodb_flush_log_at_trx_commit=1和sync_binlog=1,保证复制环境事务的持久性和一致性
·不要在master节点开启skip-networking,否则网络断开后,slave节点就无法连接到master节点

[mysqld]
log-bin=mysql-bin
server-id=1

2.master库中创建用于复制的用户

建议创建一个单独的用户用于复制(用户名和密码都会被存放在一个纯文本文件master.info中)

mysql> create user repl@%.mydomain.com identified by slavepass;
mysql> grant replication slave on *.* to repl@%.mydomain.com;

3.获取master的当前状态

启动复制必须要告诉slave节点从哪里开始复制,即master节点的二进制日志的当前位置

(1)在master节点,开启一个会话执行以下命令:

mysql> flush tables with read lock;

执行该命令会flush所有的表并阻塞其它对master的写操作。如果是innodb表,也会阻塞提交操作。
(2)在master节点,开启另一会话执行以下命令:

mysql > show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73       | test         | manual,mysql     |
+------------------+----------+--------------+------------------+

4.配置salve库

配置唯一的server-id 澡slave节点可以不开启二进制日志,但是开启了二进制日志后,可以在slave节点进行数据备份和crash恢复操作

如果开启参数report-host=hostname,则可以在master节点使用命令"show slave hosts"

[mysqld]
server-id=2

5.数据同步

取决于用那种方式进行数据同步

 

用mysqldump

(1)导出数据

 shell> mysqldump --all-databases --master-data > fulldb.dump 

--master-data参数会在salve节点自动加上"change masterto"操作。

如果没有使用该参数,需要在执行mysqldump之前执行"flush tables with read lock"命令,获取二进制日志的位置,以及"change master to"等操作,mysqldump执行完毕后还要手动释放锁。

(2)启动slave,加上参数--skip-slave-start(不开启复制)

(3)导入数据

shell> mysql < fulldb.dump

 

用裸数据文件快照

如果数据库较大,拷贝裸数据文件的效率会比mysqdump快。 最好是shutdown database进行冷拷贝

(1)将数据文件拷贝解压到相应的目录

(2)启动slave,加上参数--skip-slave-start(不开启复制)

6.使用master位置信息配置slave(二进制文件的名称和位置)

mysql> change master to
    ->     master_host=master_host_name,
    ->     master_user=replication_user_name,
    ->     master_password=replication_password,
    ->     master_log_file=recorded_log_file_name,
    ->     master_log_pos=recorded_log_position;

7.启动slave

 

创建一个已经存在数据的MySQL复制

标签:

原文地址:http://www.cnblogs.com/abclife/p/4908642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!