xxxmenger 发表于 2018-10-11 10:27:40

MySQL5.7主从复制

  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在下添加如下:
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文件的下设置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;

页: [1]
查看完整版本: MySQL5.7主从复制