博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 主从复制
阅读量:7155 次
发布时间:2019-06-29

本文共 3248 字,大约阅读时间需要 10 分钟。

1. 主库创建允许远程连接 + 至少具备 replication、slave 权限的 MySQL 用户

用户名解释

这边的用户 'slave_mysql'@'192.168.%' 指的是只允许 ip192.168. 开头的远程主机进行连接(本地测试用的),新手建议是设置为 'slave_mysql'@'%'。注意数据库通配符的使用。

mysql -u root -pmysql> grant replication slave on *.* to 'slave_mysql'@'192.168%' identified by '123456';

2. 主库配置文件设置

区分

[mysql] 是针对数据库客户端的配置

[mysqld] 是针对数据库服务器的配置

这边设置的是针对数据库服务器的配置:

[mysqld]# 设置服务器ID,从服务器ID必须大于主服务器IDserver-id=1# 启动 mysql 的二进制日志系统log-bin=mysql-bin# 需要同步的数据库名,如果有多个,则重复此参数,每个数据库一行binlog-do-db=Test# 不同步的 mysql 数据库,同上binlog-ignore-db=mysqlbinlog-ignore-db=performance_schemabinlog-ignore-db=information_schemabinlog-ignore-db=sys

3. 从库配置文件

[mysqld]server-id=2log-bin=mysql-bin# 要复制的数据库replicate-do-db=Test# 不要复制的数据库replicate-ignore-db=mysqlreplicate-ignore-db=performance_schemareplicate-ignore-db=information_schemareplicate-ignore-db=sys

4. 查看主库 master 信息

show master status;

结果:

+------------------+----------+--------------+-------------------------------------------------+-------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |+------------------+----------+--------------+-------------------------------------------------+-------------------+| mysql-bin.000006 |     2216 | Test         | mysql,performance_schema,information_schema,sys |                   |+------------------+----------+--------------+-------------------------------------------------+-------------------+1 row in set (0.00 sec)

这边特别注意的是 filepositionbinlog_do_db 三个字段,分别是二进制日志文件(实现主从复制的文件),从库开始复制的位置,需要进行同步的数据库。

5. 从库,开启同步

mysql> change master to mysql> master_host='192.168.1.1' ,             # 远程主机的IP地址mysql> master_user='slave_mysql'@'192.168.%' , # 主库允许远程连接的用户mysql> master_password='123456' ,              # 密码mysql> master_log_file='mysql-bin.000006' ,    # 同步的日志文件mysql> master_log_pos=2216;                    # 开始同步的位置

6. 从库检查是否成功开启

show slave status \G

结果

*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.150.128                  Master_User: slave_mysql                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.000006          Read_Master_Log_Pos: 2216               Relay_Log_File: grayVTouch-relay-bin.000002                Relay_Log_Pos: 320        Relay_Master_Log_File: mysql-bin.000006             Slave_IO_Running: Yes // 必须为 yes            Slave_SQL_Running: Yes // 必须为 yes              Replicate_Do_DB: Test          Replicate_Ignore_DB:          ......1 row in set (0.00 sec)

Slave_IO_RunningSlave_SQL_Runniing 必须为 yes ,表示开启成功。

7. 查看效果

主库中针对同步的数据库新增(或修改)数据,然后查看从库对应的数据库。

主库

use Test;create table if not exists test_master_slave (    id int primary key auto_increment not null ,     action char(255) ,     c_time timestamp default current_timestamp);

从库

查看 Test 数据库有没有出现 test_master_slave 表。

8. 相关问题

1. Slave_IO_Running:connecting 问题

从库没有访问主库的权限,实际就是主库没有开启远程访问的账号。解决方法,主库新建具有远程连接的账号,从库关闭现有的主从复制进程,重新设置 master,然后在开启主从复制。

  1. 执行 步骤1

  2. mysql> stop slave;

  3. 重复 步骤5(包含步骤5)以下步骤

2. Slave_IO_Running:no 问题

SQL 语句出现错误,导致同步进程终止。具体可以查看从库错误日志,路径:/path/to/mysql/data/userAccount.err 文件。userAccount 指的是主库所在远程主机的用户名(猜的)。

9. 更多资料(主从复制原理)

转载地址:http://lwrgl.baihongyu.com/

你可能感兴趣的文章
Python模拟新浪微博登录
查看>>
zabbix 代理(agent)端详细安装配置一
查看>>
常见证书格式及相互转换
查看>>
Linux 安装python 模块及库
查看>>
CentOS 配置网关服务器
查看>>
如何在rhel5环境下配置网卡绑定
查看>>
NodeJS基础-9 HTTP小爬虫
查看>>
F5 LTM1500诡异的硬盘故障(连载二)
查看>>
SEO系列一:SEO是什么?SEO有什么意义?
查看>>
快递小哥逆袭自传:用了6年时间做到了IT部门主管
查看>>
程序coredump原因
查看>>
button只能点击一次的限制
查看>>
回调函数的理解
查看>>
STM32F767IGT6上电多次重启问题查找与解决
查看>>
hadoop
查看>>
Getting Started in OS Development开发自己的操作系统
查看>>
HEX文件格式
查看>>
JVM调优之:内存模型
查看>>
1.3列出文件属性 ls
查看>>
easyui filebox文件类型判断
查看>>