使用MySQL 5.6,搭建主从复制。关于5.6的安装,可以参考《MySQL 5.6 rpm安装方法和碰见的问题》。

 

主库创建slave用户,设置复制权限,

mysql> create user 'slave'@'1.1.1.2' identified by 'root';

Query OK, 0 rows affected (0.00 sec)

    1. mysql> grant replication slave on *.* to 'slave'@'1.1.1.2' identified by 'root';
    2. Query OK, 0 rows affected (0.00 sec)

 

  1. 编辑my.cnf配置文件,设置主库server-id=1,定义需要复制的库为test,忽略mysql数据库
  1. [root@vm-kvm10000-app mysql]# vi /etc/my.cnf
  2. [mysqld]
  3. server-id=1
  4. log-bin=mysql-bin
  5. binlog_do_db=test
  6. binlog_ignore_db=mysql

 

  1. 重启主库MySQL服务,
  1. [root@vm-kvm10000-app mysql]# service mysql restart
  2. Shutting down MySQL.. SUCCESS!
  3. Starting MySQL. SUCCESS!

 

  1. 看一下主库状态,
  1. mysql> show master status;
  2. +------------------+----------+--------------+------------------+-------------------+
  3. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  4. +------------------+----------+--------------+------------------+-------------------+
  5. | mysql-bin.000002 |      120 | test         | mysql            |                   |
  6. +------------------+----------+--------------+------------------+-------------------+
  7. 1 row in set (0.00 sec)

 

  1. 或者
  2. mysql> show master status \G
  3. *************************** 1. row ***************************
  4. File: mysql-bin.000002
  5. Position: 120
  6. Binlog_Do_DB: test
  7. Binlog_Ignore_DB: mysql
  8. Executed_Gtid_Set:
  9. 1 row in set (0.00 sec)

 

  1. 从库,编辑my.cnf配置,设置server-id=2,区别于主库,
  1. [root@vm-kvm10001-app mysql]# vi /etc/my.cnf
  2. [mysqld]
  3. server-id=2

 

  1. 重启MySQL服务,
  1. [root@vm-kvm10001-app mysql]# service mysql restart
  2. Shutting down MySQL.. SUCCESS!
  3. Starting MySQL. SUCCESS!

 

  1. 设置主库信息,
  1. mysql> change master to master_host='1.1.1.1',master_user='slave',master_password='root',master_log_file='mysql-bin.000001',master_log_pos=120,master_connect_retry=10;
  2. Query OK, 0 rows affected, 2 warnings (0.03 sec)

 

  1. 检索从库状态,
  1. mysql> show slave status \G;
  2. *************************** 1. row ***************************
  3. Slave_IO_State:
  4. Master_Host: 10.221.3.129
  5. Master_User: slave
  6. Master_Port: 3306
  7. Connect_Retry: 10
  8. Master_Log_File: mysql-bin.000001
  9. Read_Master_Log_Pos: 120
  10. Relay_Log_File: vm-kvm11853-app-relay-bin.000001
  11. Relay_Log_Pos: 4
  12. Relay_Master_Log_File: mysql-bin.000001
  13. Slave_IO_Running: No
  14. Slave_SQL_Running: No
  15. Replicate_Do_DB:
  16. Replicate_Ignore_DB:
  17. Replicate_Do_Table:
  18. Replicate_Ignore_Table:
  19. Replicate_Wild_Do_Table:
  20. Replicate_Wild_Ignore_Table:
  21. Last_Errno: 0
  22. Last_Error:
  23. Skip_Counter: 0
  24. Exec_Master_Log_Pos: 120
  25. Relay_Log_Space: 120
  26. Until_Condition: None
  27. Until_Log_File:
  28. Until_Log_Pos: 0
  29. Master_SSL_Allowed: No
  30. Master_SSL_CA_File:
  31. Master_SSL_CA_Path:
  32. Master_SSL_Cert:
  33. Master_SSL_Cipher:
  34. Master_SSL_Key:
  35. Seconds_Behind_Master: NULL
  36. Master_SSL_Verify_Server_Cert: No
  37. Last_IO_Errno: 0
  38. Last_IO_Error:
  39. Last_SQL_Errno: 0
  40. Last_SQL_Error:
  41. Replicate_Ignore_Server_Ids:
  42. Master_Server_Id: 0
  43. Master_UUID:
  44. Master_Info_File: /var/lib/mysql/master.info
  45. SQL_Delay: 0
  46. SQL_Remaining_Delay: NULL
  47. Slave_SQL_Running_State:
  48. Master_Retry_Count: 86400
  49. Master_Bind:
  50. Last_IO_Error_Timestamp:
  51. Last_SQL_Error_Timestamp:
  52. Master_SSL_Crl:
  53. Master_SSL_Crlpath:
  54. Retrieved_Gtid_Set:
  55. Executed_Gtid_Set:
  56. Auto_Position: 0
  57. 1 row in set (0.00 sec)

 

  1. 其中最重要的就是,这两个参数,要求YES,但此处为NO,
  1. Slave_IO_Running: No
  2. Slave_SQL_Running: No

 

  1. 检索错误日志,提示无法找见./performance_schema/cond_instances.frm文件,
  1. [root@vm-kvm10001-app mysql]# vm-kvm10001-app.err
  2. 2017-08-29 16:10:37 22933 [ERROR] /usr/sbin/mysqld: Can't find file: './performance_schema/cond_instances.frm' (errno: 13 - Permission denied)

 

  1. 看一下其目录,发现performance_schema文件夹,是root权限,mysql用户无法访问,因此需要修改一下其权限,
  1. [root@vm-kvm10001-app mysql]# ls -rlht
  2. total 109M
  3. ...
  4. drwx------ 2 root  root  4.0K Aug 29 15:05 performance_schema
  5. ...

 

  1. [root@vm-kvm10001-app mysql]# chown -R mysql:mysql *

 

  1. [root@vm-kvm10001-app mysql]# ls -rlht
  2. total 109M
  3. ...
  4. drwx------ 2 mysql mysql 4.0K Aug 29 15:05 performance_schema
  1. ...

 

  1. 重启服务,
  1. [root@vm-kvm10001-app mysql]# service mysql restart
  2. Shutting down MySQL.... SUCCESS!
  3. Starting MySQL. SUCCESS!

 

  1. 再看从库状态,
  1. mysql> show slave status \G
  2. *************************** 1. row ***************************
  3. ...
  4. Slave_IO_Running: Yes
  5. Slave_SQL_Running: Yes
  6. ...

 

  1. 主库导出数据,用于导入从库,首先需要设置读锁,避免数据不一致,
  1. mysql> flush tables with read lock;

 

  1. mysql> show master logs;
  2. +------------------+-----------+
  3. | Log_name         | File_size |
  4. +------------------+-----------+
  5. | mysql-bin.000001 |       143 |
  6. | mysql-bin.000002 |       222 |
  7. | mysql-bin.000003 |       545 |
  8. +------------------+-----------+
  9. 3 rows in set (0.00 sec)

 

  1. 执行mysqldump将test库,导出test.sql文件,
  1. [root@vm-kvm10000-app mysql]# mysqldump -uroot -p -B test > test.sql

 

  1. 然后解锁表,
  1. mysql> unlock tables;

 

  1. 从库执行导入,
  1. [root@vm-kvm10001-app mysql]# mysql -uroot -p < test.sql

 

  1. 要确保从库,这两个值正确,
  1. Slave_IO_Running: Yes    
  2. Slave_SQL_Running: Yes

 

  1. 此时就完成了主从复制,向主库插入一条记录,
  1. mysql> INSERT INTO test
  2.     -> (id, name)
  3.     -> VALUES
  4.     -> (1, "a");
  5. Query OK, 1 rows affected (0.00 sec)

 

  1. 从库中可以检索出来,
  1. mysql> select * from test;
  2. +-------+--------+
  3. |     id    |  name  |
  4. +-------+--------+
  5. |      1    |     a      |
  6. +-------+--------+

 

 

  1. 总结:
  2. 1. MySQL相关文件、文件夹需要的权限,可能会因为不正确,例如需要mysql权限,但却是root,导致数据库异常。
  3. 2. 主从复制,需要关注从库,这两个参数值,需要均为YES,出现NO,则可以检索错误日志,进一步定位。
  4. Slave_IO_Running: Yes
  5. Slave_SQL_Running: Yes

mysql5.6搭建主从复制的更多相关文章

  1. Windows Server 2003 IIS6.0+PHP5(FastCGI)+MySQL5环境搭建教程

    准备篇 一.环境说明: 操作系统:Windows Server 2003 SP2 32位 PHP版本:php 5.3.14(我用的php 5.3.10安装版) MySQL版本:MySQL5.5.25 ...

  2. MySQL5.6 Replication主从复制(读写分离) 配置完整版

    MySQL5.6 Replication主从复制(读写分离) 配置完整版 MySQL5.6主从复制(读写分离)教程 1.MySQL5.6开始主从复制有两种方式: 基于日志(binlog): 基于GTI ...

  3. Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程

    现在很多朋友想尝试win2008 r2来跑web服务器,跟win2003相比界面差别有点大,有些人可能不太习惯,不过以后是趋势啊,这里简单分享下,方便需要的朋友 准备篇 一.环境说明: 操作系统:Wi ...

  4. 一次使用innobackupex重新搭建主从复制报错解决方法及注意事项

    [环境介绍] 系统环境:CentOS release 6.4 (Final) + Server version: 5.7.18-log MySQL Community Server (GPL) + i ...

  5. 【MySQL】CentOS下安装及搭建主从复制

    CentOS下安装MySQL 1,wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 2,rpm -ivh m ...

  6. Redis-环境搭建、创建服务、搭建主从复制-Windows版本

    一.搭建Redis环境 1.链接:http://pan.baidu.com/s/1boKAzzL 密码:sh2r 2.不赘述:执行redis-server.再执行redis-cli即可.redis环境 ...

  7. centos7搭建mysql-5.7.22主从复制

    mysql7.7.22主从复制 本项目是根据真实环境搭建编写出文档,文档中的目录也是根据自己公司环境所创建.公司原来是一台服务器搭建的数据库(5.7.22),由于业务的扩展需要搭建一台从服务器,减轻主 ...

  8. mysql5.7使用gtid模式搭建主从复制架构

    一.架构 两台mysql服务器做一主一从,172.28.18.69(主) 172.28.18.78(从) 二.分别编译安装mysql5.7 1.下载mysql5.7.26源码包 [root@serve ...

  9. mysql5.7基于gtid进行搭建主从复制过程

    gtid_mode = onenforce-gtid-consistency = onskip_name_resolve # 去掉域名解析二进制日志必须开启,且格式为ROWserver-id必须配置成 ...

随机推荐

  1. 一些实用的adb命令

    一.前提: 1.打开手机调试模式,确保手机已正常连接电脑,可在电脑上通过adb devices命令查看,结果如下说明连接成功: List of devices attached90xxxxc9 dev ...

  2. Python学习---深入编码学习1225

    1.1. Python2 Py2中只有2中数据类型,Str和Unicode,而且str中保存的是bytes,Unicode中保存的是unicode 一切我们能看到的明文都是unicode数据类型, b ...

  3. Bearer Token的加密解密规则(OAuth中间件)

    在OAuthBearerAuthenticationMiddleware中使用Microsoft.Owin.Security.DataHandler. SecureDataFormat<TDat ...

  4. .net framework profiles /.net framework 配置

    几年前一篇关于 .net framework client profile http://www.cnblogs.com/zzj8704/archive/2010/05/19/1739130.html ...

  5. linux下常用命令:

    常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir     ...

  6. php中的static

    静态成员是一种类变量,可以把它看成时属于整个类而不是属于类的某个实例.与一般的实例变量不同的是,静态成员只保留一个变量值,而这个变量值对所有的实例都是有效的,也就是说,所有的实例共享这个成员. $th ...

  7. python 获取当前目录,上级目录,上上级目录

    import os print '***获取当前目录***' print os.getcwd() print os.path.abspath(os.path.dirname(__file__)) pr ...

  8. Foj 2296 Alice and Bob(博弈、搜索)

    Foj 2296 Alice and Bob 题意 两个人博弈,规则如下:轮流取0~9中的数字,最后Alice所得的数字个数为1~n中,数位在Alice所取集合中出现奇数次的. 双方想获得尽量多,问A ...

  9. Win8.1下运行环境/配置问题解决方案总结

    目录 1.运行 adb shell 时报错" adb server version (26) doesn't match this client (39); killing... " ...

  10. 3、Android-全局大喇叭-广播机制

    所谓的官博机制可以理解成为1对多的概念 即一个喇叭所有的人都能听到(统一范围内) 为了便于及逆行系统级别的消息通知 Android引入了一套广播机制 而且更容易进行实现. 3.1.广播机制的简介 再A ...