Debian mysql同步

两台机器:

主:192.168.1.89

辅:192.168.1.188

 

1、

在192.168.1.89的mysql中执行:create database test;并创建表

CREATE TABLE `users` (
  `UserID` bigint(20) NOT NULL auto_increment,
  `Username` varchar(64) NOT NULL default '',
  `Password` varchar(64) NOT NULL default '',
  PRIMARY KEY  (`UserID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

编辑192.168.1.89上mysql配置文件/etc/mysql/my.cnf,在[mysqld] 下增加:

[mysqld]

server-id = 1                                          #唯一标志
log_bin = /var/log/mysql/mysql-bin.log  #同步数据库的日志文件

binlog_do_db = test                              #要同步的数据库

 

2、

重启192.168.1.89的 mysql

进入到mysql中执行命令:show master status; #查看主机状态,显示如下

+------------------+----------+---------------+------------------+
| File                                | Position | Binlog_Do_DB  | Binlog_Ignore_DB |
+------------------+----------+---------------+------------------+
| mysql-bin.000060          |      98    | test  |                              |
+------------------+----------+---------------+------------------+

 

注:辅库配置完同步后执行show slave status里的Master_Log_File,Read_Master_Log_Pos,Replicate_Do_DB和这里的值分别相等

 

3、

192.168.1.89的mysql中创建用户testsyn拥有replication slave权限

grant replication slave on *.* to "test"@"192.168.1.%" identified by 'test' with grant option;

 

4、

配置辅库192.168.1.188 的/etc/mysql/my.cnf文件,在[mysqld] 下增加:

server-id = 2  

master-host = 192.168.1.89 

master-user = test    

master-password = test   

master-port = 3306  

master-connect-retry = 5  #重试间隔时间   

replicate-do-db = test    #同步db 

 

5、

查看辅库状态,进入到mysql中,输入命令:show slave status\G; 显示结果如下

*************************** 1. row ***************************
           Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.1.89
                Master_User: test
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000060  
           Read_Master_Log_Pos: 98
             Relay_Log_File: mysqld-relay-bin.000005
              Relay_Log_Pos: 
      Relay_Master_Log_File: mysql-bin.000060
           Slave_IO_Running: Yes  #连接到主库,并读取主库的日志到本地,生成本地日志文件,为Yes则生效
          Slave_SQL_Running: Yes
#读取本地日志文件,并执行日志里的sql ,为Yes则生效
            Replicate_Do_DB: test
        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: 98
            Relay_Log_Space: 
            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

 

 

 

 

 


 

如果出现Slave_IO_State: Waiting for master to send event,说明两个数据库已经同步,辅库192.168.1.188会自动创建test数据库,如果没有出现,下面的方式可以帮你解决这个问题

在辅库上停止slave,执行命令stop slave;

执行命令:change master to master_host='192.168.1.89', master_user='test', master_password='test', master_log_file='mysql-bin.000060', master_log_pos=98;

这里的值应该和主库上执行show master status的值写成一致,不然就会出错哦。

执行start slave; 查看show slave status\G; 如果辅库上test没有创建,则需要执行下一步操作

6、

从主库上将库导出来,执行命令:

mysqldump --opt --master-data -uroot -ptest test > /home/test/test.dump

在辅库上创建test库create database test,

stop slave #先停止slave

将test.dump导入到test库中:mysql -uroot -test test < /home/test/test.dump

start slave

7、在主库中插入数据:
insert into users (username,password) values ('test1','test1');

辅库上的users表里也相应的有了数据

如果需要双向同步, 配置上是一样的,重复1-7的步骤就可以了。

 

你可能感兴趣的:(sql,mysql,Debian,SQL Server)