您的位置:首页 > 数据库 > MySQL

mysql5.6之主从复制

2014-12-27 16:00 176 查看
在新的之间建立复制:

1. 配置服务器中的配置文件my.cnf,二进制日志文件和服务器ID
[mysqld]
log-bin=mysql-bin ###最好与数据文件分离
server-id=1
2. 开启服务器
3. 建立用于连接服务器的用户
CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
4. 得到服务器的状态信息
mysql> flush tables with read lock
mysql> show master status;
5. 在服务器上,释放读锁
mysql> unlock tables;
6. 配置服务器中的配置文件my.cnf,服务器ID
[mysqld]
server-id=2
7. 开启服务器
8. 在服务器上设置主配置
mysql> CHANGE MASTER TO
-> MASTER_HOST='主服务器IP',
-> MASTER_USER='用户名',
-> MASTER_PASSWORD='密码',
-> MASTER_LOG_FILE='当前的二进制日志文件',
-> MASTER_LOG_POS=2063;

MySQL使用3个线程进行复制:
一个在主服务器上

Binlog dump thread 当从服务器连接主服务器时,主服务器创造了一个线程,发送二进制日志内容到从服务器。使用SHOW PROCESSLIST,可以识别这个线程
两个在从服务器上
Slave I/O thread 当在从服务器上执行START SLAVE时,从服务器创造了这个线程,连接上主服务器,请求主服务器传送更新的二进制日志,然后读取复制到从服务器上面形成中继日志。使用SHOW SLAVE STATUS\G,可以看到Slave_IO_running
Slave SQL thread 从服务器创造了这个线程,从中继日志里读取执行事件

问题:slave stop
set global sql_slave_skip_counter=1
slave start

主主复制:
auto-increment-increment #增长量#
auto-incremnet-offset #起始值#

开启crash-safe功能
relay_log_info_repository=TABLE
relay_log_recovery=ON
主上:
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_support_xa = 1

如何阻止主更新直到从跟上:

1.在主上执行
mysql> FLUSH TABLES WITH READ LOCK;
mysql> [b]SHOW MASTER STATUS;[/b]
2.在从上执行
mysql> SELECT MASTER_POS_WAIT('log_name', log_pos);

3.在主上执行
mysql> UNLOCK TABLES;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: