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

MySQL5.7主从复制

2016-12-12 23:18 1041 查看
master设置
0,查看是否开启binlog,登录mysql执行如下语句:
mysql> SHOW MASTER LOGS;
或者:
mysql> SHOW BINARY LOGS;
如果显示如下信息则表示没有开启:
ERROR 1381 (HY000): You are not using binary logging
1,如果没有开启binlog,则需要开启binlog,首先停掉mysql服务器:
shell> bin/mysqladmin -u root -p shutdown
编辑/etc/my.cnf在[mysqld]下添加如下:
log-bin=mysql-bin
server-id=1
innodb_flush_logc_at_trx_commit=1
sync_binlog=1
启动mysql服务器:

shell> bin/mysql_safe --user=mysql &
2,创建复制用户
mysql> CREATE USER 'repl'@'slave_ip' IDENTIFIED BY 'slavepass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slave_ip';
3,开启一个会话,刷新所有的表并且阻塞写操作
mysql> FLUSH TABLES WITH READ LOCK;
4,开启另一个会话,确定binlog文件和位置,记录File和Position,配置slave需要用到。
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
5,如果源master内有数据则导出数据
mysqldump --all-databases > data.sql
如果只导出指定库可以使用--databases
6,释放写锁
UNLOCK TABLES;
slave配置:
0,停止MySQL:
shell> bin/mysqladmin -u root -p shutdown
1,在my.cnf文件的[mysqld]下设置server_id,master和slave必须彼此不同,如果有其他slave,也不能彼此相同,如下:
server-id=2
2,启动MySQL并登陆,如果有数据导入数据:
shell> bin/mysql_safe --user=mysql &
mysql> source /data.sql;
3,设置master信息:
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线程
mysql> START SLAVE;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息