MYSQL主从复制


注意几点:
1.主从服务器最好版本相同。
2.数据库内数据要保持一致。
3.主从的server_id是不能相同的,而且UUID也是不能相同的

我这里做的主从复制都是基于mysql5.7版本

主从复制

1.主服务器(master)开启二进制日志

[root@master ~]# vim /etc/my.cnf
log_bin=mysql-bin
server_id=1

重启
[root@master ~]# systemctl restart mysqld

2.从服务器(slave)开启中继日志

[root@slave ~]# vim /etc/my.cnf
relay_log=relay-bin
relay_log_index=slave-relay-bin.index
server_id=2

重启
[root@slave ~]# systemctl restart mysqld

这里我做的是主服务器mysql是有数据的,并不是空数据库,但从服务器是空的。

既然做的同步,主从服务器的数据要相同。

3.主服务器备份数据传到从服务器

[root@master ~]# mysqldump -uroot -p123.com -A > /tmp/all.sql
[root@master ~]# scp /tmp/all.sql 192.168.1.12:/tmp/
从服务器导入
[root@slave ~]# mysql -uroot -p123.com < /tmp/all.sql

4.在master创建用于同步的用户账号

mysql> grant replication slave on *.* to rep@'192.168.1.%' identified by '123.com';

5.查看master状态,文件名和位置

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

6.在slave执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置)

mysql> change master to
    -> master_host='192.168.1.10',
    -> master_user='rep',
    -> master_password='123.com',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=154;

7.启动slave服务器
启动命令:

mysql> start slave;

关闭命令:

mysql> stop slave;

8.查看slave状态

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.10
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 446
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 612
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

这里主要看
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

当这两个都为Yes就表示同步成功了

9.验证
我在master服务器常见一个库,slave服务器也会同步。

master创建
mysql> create database helloslave;

slave查看
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| helloslave         |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

这里说一下如果UUID出现冲突该怎么办:

可以找到/usr/local/mysql/data/auto.cnf来修改或者直接删掉UUID重启


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值