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]