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

2018-06-13  本文已影响0人  wuxuan94

一、环境
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库下创建表开测试同步了。

上一篇下一篇

猜你喜欢

热点阅读