9iiooi 发表于 2016-12-14 08:30:57

MySQL5.7双机热备

master设置
0,查看是否开启binlog,登录mysql执行如下语句:

1
mysql> SHOW MASTER LOGS;




或者:

1
mysql> SHOW BINARY LOGS;




如果显示如下信息则表示没有开启:

1
ERROR 1381 (HY000): You are not using binary logging




1,如果没有开启binlog,则需要开启binlog,首先停掉mysql服务器:

1
shell> bin/mysqladmin -u root -p shutdown




编辑/etc/my.cnf在下添加如下:

1
2
3
4
5

log-bin=mysql-bin
server-id=1
innodb_flush_logc_at_trx_commit=1
sync_binlog=1




启动mysql服务器:


1
shell> bin/mysql_safe --user=mysql &




2,创建复制用户

1
2
mysql> CREATE USER 'repl'@'slave_ip' IDENTIFIED BY 'slavepass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slave_ip';




3,开启一个会话,刷新所有的表并且阻塞写操作

1
mysql> FLUSH TABLES WITH READ LOCK;




4,开启另一个会话,确定binlog文件和位置,记录File和Position,slave需要用到。

1
mysql > SHOW MASTER STATUS;




+------------------+----------+--------------+------------------+
| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73   | test      | manual,mysql    |
+------------------+----------+--------------+------------------+
5,如果源master内有数据则导出数据

1
mysqldump --all-databases > data.sql




如果只导出几个苦可以使用--databases
6,释放写锁

1
UNLOCK TABLES;




slave配置:
0,停止MySQL:

1
shell> bin/mysqladmin -u root -p shutdown




1,设置server_id,master和slave必须不同,如果有其他slave,也不能彼此相同。

1
2

server-id=2




2,启动MySQL并登陆,如果有数据导入数据:

1
2
shell> bin/mysql_safe --user=mysql &
mysql> source /data.sql;




3,设置master信息:

1
2
mysql> CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='repl', MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=73;




3,启动slave线程

1
mysql> START SLAVE;



页: [1]
查看完整版本: MySQL5.7双机热备