美文网首页
mysql主从库配置(本地多mysql)

mysql主从库配置(本地多mysql)

作者: wuxuan94 | 来源:发表于2018-06-13 15:39 被阅读0次

    一、环境
    1.windows、mysql5.5
    2.本地安装多个mysql

    二、主从备份的原理
    1.binlog文件:开启binlog,主服务器数据库的每次操作都会记录在二进制日志文件mysql-bin.xxx中。
    2.从服务器的I/O线程使用专用帐号登陆到主服务器中读取该二进制文件,并将文件内容写入到自己本地的中继日志relay-log文件中。
    3.然后从服务器的SQL线程会根据中继日志中的内容执行SQL语句。

    三、同步初态
    1、将主服务器要同步的数据库加锁,避免同步时发生改变:

    >use database_name;
    >flush tables with read lock;
    

    2、使用mysqldump工具导出数据:

    mysqldump -uroot -pxxx database_name >database_name.sql
    

    3、备份完成后,解锁数据库:

    >unlock tables;
    

    4、将初始数据导入从数据库:

    >create database database_name;
    >use database_name;
    >source database_name.sql;
    

    四、主从同步设置
    1、开启主服务器binlog,/数据库1目录/my.ini文件

    server-id=1        #设置主服务器serverid
    log-bin=mysql-bin  #开启binlog
    log-bin-index=master-bin.index
    

    重启mysql服务
    2、查看主服务器日记记录位置:

    >show master status\G
    

    显示内容如下:

    *************************** 1. row ***************************
                File: mysql-bin.000002    #从服务器用到
            Position: 107    #从服务器用到
        Binlog_Do_DB:
    Binlog_Ignore_DB:
    1 row in set (0.01 sec)
    

    3.配置从服务器,/数据库2目录/my.ini文件

    log-bin=mysql-bin                                 #开启二进制日志
    
    server-id       = 2                               #主数据库id为1,不能相同。
    replicate_wild_do_table=test.%                    #只同步test库下的表
    relay_log=mysqld-relay-bin                        #记录中继日志
    log-slave-updates=YES                             #从服务器同步后记录日志
    

    重启mysql2服务
    4.主服务器创建允许从服务器同步数据的账户

    >grant replication slave on *.* to 'user_name'@'127.0.0.1' 
    identified by 'password';  #用户名,密码自定义,ip是主服务器ip
    >flush privileges;  #刷新系统权限表
    

    5.从服务器开启同步

    >change master to 
    master_host='127.0.0.1',    #主服务器ip
    master_port=3306,    #主服务器端口
    master_user='user_name',  #允许从服务器访问的用户名
    master_password='password',    #用户名密码
    master_log_file='mysql-bin.000002',    #主服务器binlog名
    master_log_pos=654;    #主服务器log位置
    

    配置完以上后,重启从服务器mysql服务。
    6.查看从服务器是否已经成功开启同步

    >show slave status\G
    

    显示如下:

    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 127.0.0.1
                      Master_User: slave0
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000002
              Read_Master_Log_Pos: 2059
                   Relay_Log_File: mysqld-relay-bin.000003
                    Relay_Log_Pos: 1658
            Relay_Master_Log_File: mysql-bin.000002
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB:
              Replicate_Ignore_DB:
               Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table: test.%
      Replicate_Wild_Ignore_Table:
                       Last_Errno: 0
                       Last_Error:
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 2059
                  Relay_Log_Space: 1815
                  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:
      Replicate_Ignore_Server_Ids:
                 Master_Server_Id: 1
    1 row in set (0.00 sec)
    

    Slave_IO_Running和Slave_SQL_Running的状态都是YES,说明同步开启成功。
    现在就可以去主服务器上的test库下创建表开测试同步了。

    相关文章

      网友评论

          本文标题:mysql主从库配置(本地多mysql)

          本文链接:https://www.haomeiwen.com/subject/iqmjeftx.html