MYSQL设置一主多从和多主多从

MYSQL主从关系

说明:MySql使用版本5.5

配置数据库my.ini文件

修改server1:主库文件

server-id=1
binlog-do-db=test
binlog-ignore-db=cctrace
binlog-ignore-db=information_schema
binlog-ignore-db=jeesite
binlog-ignore-db=mmall
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=pujin
binlog-ignore-db=rmp
binlog-ignore-db=smart_site
binlog-ignore-db=zp
log-slave-updates
replicate-do-db=test
replicate-ignore-db=cctrace
replicate-ignore-db=information_schema
replicate-ignore-db=jeesite
replicate-ignore-db=mmall
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
replicate-ignore-db=pujin
replicate-ignore-db=rmp
replicate-ignore-db=smart_site
replicate-ignore-db=zp
log-bin=mysql-bin

auto_increment_offset=1
auto_increment_increment=2

修改server2:从库文件

server-id=2
binlog-do-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
log-slave-updates
replicate-do-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
log-bin=mysql-bin

auto_increment_offset=2
auto_increment_increment=2

重启mysql服务

配置项释义
server-id:标识,唯一,值范围在:1至2^23-1
binlog-do-db和replicate-to-db:要同步的数据库,多个需要同步的数据可以继续向下写
binlog-ignore-db和replicate-ignore-db:不需要同步的数据库
log-bin:配置是否在数据库有变动时写二进制日志
auto_increment_offset和auto_increment_increment:当同步断开,两台服务器分别有新数据进入,那么主键ID是自增长列会出现冲突的情况,会导致同步无法继续。加上上面两个设置后server1的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数,server2的为偶数。

2台机器上分别增加同步用户

在两台服务器的mysql用户里新增用户名(此用户名为你本机mysql用户名,如root),密码(mysql密码)的同步用户。
1.在主库上运行
grant replication slave on *.* to 从库用户名@从库ip identified by '从库密码';

2.在从库上运行
grant replication slave on *.* to 主库用户名@主库ip identified by '主库密码';

设置主机并启动从服务器线程

在主库上执行mysql命令:

mysql> show master status;

再在从库上执行命令:

mysql> stop slave;

mysql> change master to master_host='192.168.17.196',master_user='root',master_password='admin',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=513;

mysql> start slave;

mysql> show slave status\G;

查看结果:出现YES即配置成功
在这里插入图片描述

主主关系将上述步骤反向操作即可。

注意事项:

mysql5.5以后就在配置文件里不支持写master-host和master-user等方式了,如果my.ini配置文件没有写正确,重启mysql服务是不能正常启动的。所以在配置之前先看清楚使用的mysql是什么版本,mysql5.5是一个分界点。

一些常规的错误:

1.配置mysql首先数据库的数据及结构要保持一致,可以通过数据库传输来保证;
其次俩个库所在的服务器要互相能够ping通;
mysql版本要一致

2.Slave_IO_Running=No
多为MASTER_LOG_FILE的文件名不对,检查是否正确或多空格之类,还有一种情况是2服务器网络不通;
--Last_IO_Errno: 1236:
该错误代码代表版本不一,可能是库不同步或mysql版本不一致;
解决办法:
首先在从库上执行
stop slave;
查看主库master状态
mysql> show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000002
        Position: 261
    Binlog_Do_DB: test
Binlog_Ignore_DB: cctrace,information_schema,jeesite,mmall,mysql,performance_schema,pujin,rmp,smart_site,zp
1 row in set (0.00 sec)

ERROR:
No query specified

mysql> flush logs;
Query OK, 0 rows affected (0.21 sec)
刷新binlog日志
flush logs;
刷新后的日志会+1,例如上面的 File: mysql-bin.000002 会变成 File: mysql-bin.000003
再次查看master状态
mysql> show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000003
        Position: 107
    Binlog_Do_DB: test
Binlog_Ignore_DB: cctrace,information_schema,jeesite,mmall,mysql,performance_schema,pujin,rmp,smart_site,zp
1 row in set (0.00 sec)

ERROR:
No query specified
然后就不需要在操作master,切换到从库执行change master to master_host='192.168.17.196',master_user='root',master_password='admin',master_port=3306,master_log_file='mysql-bin.000003',master_log_pos=107;
执行start slave;
查看状态:
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.17.196
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 107
               Relay_Log_File: DESKTOP-P0757RN-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: test
          Replicate_Ignore_DB: information_schema,mysql,performance_schema
           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: 107
              Relay_Log_Space: 419
              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)

3.Slave_SQL_Running=No
一般是slave机器重起后,事务回滚造成的,
解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

其他错误可以查看错误代码,百度具体问题原因。

MYSQL环

这种主要是多个mysql之间互为主从关系情况下会用到,这个主要是server-id之不一样就好。

MYSQL清除主从关系

清除主从关系

注意,从库清除后,主库仍会留有链接信息,需对主库再进行清理(若后续不需要在建立主从则可无视该步骤),主要清除mysql-bin.XXXXX文件,ib_logfile?文件和mysql-bin.index(可选则清理)。ibdata1文件不建议清理,里面保存的是对数据库操作的记录信息。

主从:

1、SHOW SLAVE STATUS来检查它正在读取哪个日志 SHOW SLAVE STATUS来检查它正在读取哪个日志 ;

2、如果你确定从服务器已经同步过了,跟主服务器一样了,那么可以直接RESET MASTER将这些文件删除

SqlServer数据同步:

sqlserver同步

  1. git clone +链接
  2. git add .
  3. git commit “备注”
  4. git pull
  5. git push
  6. git status 查看状态命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值