Mysql主从复制

mysql主从同步配置

环境

Centos 7

window 10

Mysql 7.5

参考

mysql 官方文档

csdn blog

配置

master配置

在主服务器的my.cnf配置文件中,增加如下配置信息然后重启mysql

[mysqld]
log-bin=mysql-bin
server-id=1

说明: 修改配置后重启mysql
1. log-bin:开启二进制日志,该日志是在事务提交时写日志文件的。默认大小是1G,后面加001,002这样的后缀顺加。
2. server-id,唯一标识主机,mysql主从每个mysql实例配置都不一样就行。这个值默认是0,如果是0,主服务器拒绝任何从服务器的连接。

slave配置

在从服务器的my.cnf配置文件中,增加如下配置信息然后重启mysql

[mysqld]
server-id=2
skip-slave-start=false
read_only=1
relay-log=relay-bin
relay-log-index=relay-bin.index

说明: 修改配置后重启mysql
server-id唯一就行。如果默认为0,则拒绝连接主服务器。

master创建复制用户

在master上,root登录mysql,执行

CREATE USER 'lxj'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'lxj'@'%';
flush privileges;

说明:
简单的创建用户,授予REPLICATION SLAVE权限。访问限制,密码,用户名等,根据实际情况自行设定,后面注意保持一致。

获取master日志坐标

连接mysql,执行
SHOW MASTER STATUS;
会有类似输出
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
记住坐标 mysql-bin.000001    154

说明

1.会话输出,有可能为空,一般修改配置文件后重启mysql就会有了。

创建master数据快照

mysqldump --all-databases --master-data -uroot -p > /tmp/dbdump.db

说明:

1.–master-data此选项会在备份中添加 CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000004’, MASTER_LOG_POS=154;

创建salve复制

1.上传master的快照备份dbdump.db到slave的/tmp下

2.设置master信息,在从mysql中输入
CHANGE MASTER TO
MASTER_HOST='192.168.234.130',
MASTER_USER='lxj',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;


3.倒入数据到slave
bin/mysql -uroot -p < /tmp/dbdump.db 

4.手工启动slave复制线程
start slave

show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.31.84
                  Master_User: repl
                  Master_Port: 13306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 154
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
配置完成,顺便看看进程

mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                  | Info             |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
|  2 | root        | localhost | NULL | Query   |    0 | starting                                               | show processlist |
|  5 | system user |           | NULL | Connect |   89 | Waiting for master to send event                       | NULL             |
|  6 | system user |           | NULL | Connect |   89 | Slave has read all relay log; waiting for more updates | NULL             |
多了两个复制的进程

说明

start slave 若提示Failed to initialize the master info structure

1,尝试先
reset slave; 

2,再重新导入主库备份文件 
mysqldump --all-databases --master-data -uroot -h 192.168.234.130 -p > /tmp/dbdump.db

mysql -uroot -h192.168.234.130 -P3307 -p < /tmp/dbdump.db

3,最后启动复制
start slave;

mysql 从库添加read_only=1 仍可修改,一般情况下我们不希望从库写数据,但read_only只对普通用户起作用,root仍可修改数据,我们只要为从库新建一个普通用户即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值