zoukankan      html  css  js  c++  java
  • Mysql实现主从同步

    根据网上众多参考案例,继续在VM虚拟机里实现MySQL主从同步功能。步骤如下:
    * 首先明确下环境
    主库本地windows ip192.168.0.103
    从库虚拟机mysql5.6 ip192.168.0.128
    1 主服务器的配置
    1.1 先建立要同步的数据库users,建表语句不说了。
    1.2 创建一个具有replication slave用户。
    mysql>grant replication slave on *.* to 'slave'@'192.168.0.128' identified by '123456';
    mysql>flush privileges; 刷新权限或重启服务。
    1.3 编辑my.cnf文件
    vi /etc/my.cnf
    添加server-id=103
    开启log-bin二进制日志文件(Mysql需要有/var/lib/mysql/目录的读写权限【可通过chown -R mysql:mysql /var/lib/mysql命令进行更改】)
    log-bin=/var/lib/mysql/mysql-bin
    #指定绝对路径,否者会出现mysql运行show master status;时无法查看日志情况
    mysql> show master status;
    Empty set (0.00 sec)
    mysql> show binary logs;
    ERROR 1381 (HY000): You are not using binary logging
    其他扩展配置项: 
    binlog-do-db=mysql1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可
    binlog-ignore-db=mysql2 #不需要备份的数据库名,如果备份多个数据库,重复设置这 个选项即可
    log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件 里
    slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)
    1.4 重启mysql数据库
    service mysqld restart
    1.5 设置读锁
    mysql>flush tables with read lock;
    1.6 得到binlog日志文件名和偏移量(此处记住File名称和Position值,后面slave服务器配置时需要用到)
    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 | 713 | | |
    +------------------+----------+--------------+------------------+
    row in set (0.00 sec)
    1.7 备份要同步的数据库
    mysqldump users > users.sql;
    1.8 解锁
    mysql>unlock tables;
    2 从服务器的配置
    先将备份下来的sql导入到从库中。
    2.1 编辑my.cnf文件
    vi /etc/my.cnf
    添加 server-id=128
    2.2 重启从数据库
    service mysqld restart
    2.3 对从数据库进行相应设置
    此处要注意logfile的名称和position的值,其余host、user和password为主数据库设置的账号和密码
    mysql> stop slave;
    Query OK, 0 rows affected (0.00 sec)
    mysql> change master to
       -> master_host='192.168.0.103',
       -> master_user='slave',
       -> master_password='123456',
       -> master_log_file='mysql-bin.000001',
       -> master_log_pos=713;
    mysql> start slave;
    Query OK, 0 rows affected (0.00 sec)
    查看从库状态:
    mysql> show slave statusG;
    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 192.168.0.107
    Master_User: repl
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000001
    Read_Master_Log_Pos: 1079
    Relay_Log_File: mysqld-relay-bin.000004
    Relay_Log_Pos: 251
    Relay_Master_Log_File: mysql-bin.000001
    Slave_IO_Running: Yes 重点关注这两值,如果为no,重做上述步骤,重新设置。
    Slave_SQL_Running: Yes
    Replicate_Do_DB:
    Replicate_Ignore_DB:
    Replicate_Do_Table:
    Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
    Replicate_Wild_Ignore_Table:
    Last_Errno: 0
    Last_Error:
    Skip_Counter: 0
    Exec_Master_Log_Pos: 1079
    Relay_Log_Space: 407
    Until_Condition: None
    Until_Log_File:
    Until_Log_Pos: 0
    Master_SSL_Allowed: No
    Master_SSL_CA_File:
    Master_SSL_CA_Path:
    Master_SSL_Cert:
    Master_SSL_Cipher:
    Master_SSL_Key:
    Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
    Last_IO_Errno: 0
    Last_IO_Error:
    Last_SQL_Errno: 0
    Last_SQL_Error:
    row in set (0.00 sec)
    ERROR:
    No query specified
    3 测试
    上述项配置完以后可查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接:在master上输入show processlistG;
    mysql> show processlistG;
    *************************** 1. row ***************************
    Id: 4
    User: root
    Host: localhost
    db: NULL
    Command: Query
    Time: 0
    State: NULL
    Info: show processlist
    *************************** 2. row ***************************
    Id: 19
    User: repl
    Host: 192.168.0.109:42337
    db: NULL
    Command: Binlog Dump
    Time: 183
    State: Has sent all binlog to slave; waiting for binlog to be updated
    Info: NULL
    rows in set (0.00 sec)
     
    ERROR:
    No query specified
     
    在主库上添加数据,检验从库变化。
  • 相关阅读:
    没有 Lambda 演算何来匿名函数——匿名函数(匿名方法和Lambda)、委托、LINQ
    HTML 4.01 符号实体
    利用 IHttpModule 自定义 HTTP 处理模块
    数据结构单链表
    Ext.Net 1.2.0_Ext.Net.RendererFormat 常用数据格式转换呈现格式
    ASP.NET 以 Request.Querystring、Request.Form 或 Request.Params 获取客户端的数据
    Flex>连接WebService
    java.sql.SQLException: 关闭的连接
    jsp>SmartUpload相关类说明
    flex>样式和主题
  • 原文地址:https://www.cnblogs.com/houweijian/p/7634195.html
Copyright © 2011-2022 走看看