文档章节

配置 MySQL 主从服务结构

刘军兴
 刘军兴
发布于 2013/01/04 11:14
字数 1001
阅读 294
收藏 14

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

配置 MySQL 主从服务结构

网络上配置 MySQL 主从服务器结构的文章很多, 本文的主要目的不是再给其
添加一个, 而是:
1. 公司项目使用 MySQL 主从, 写下来以后如果出问题, 可以重新配置.(备忘)
2. 自己不致于遗忘, 因为配置这种事是一次性的, 不是需要熟练的工作.
3. 使别人放心.

配置共6步, 分别如下:
1. 在主 MySQL 配置文件 my.cnf, 在我们的 Ubuntu linux 机器上该配置文件
  位于 /etc/mysql 目录下. 里面检查 [mysqld] 小节下的 server-id,
  log_bin 的设置. 如下:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = test        # 需要复制的数据库(列表)
binlog_ignore_db = mysql   # (复制中忽略的数据库)

配置之后重新启动 MySQL, 方法是 service mysql restart (注意在不同的 linux
上不同, 我们的系统是这个命令).
请校验配置正确, MySQL 能够正确启动. 如果不能启动, 请检查是否配置写错或...

进入 mysql 命令, 执行 select @@server_id; 或 
show global variables like 'server_id'; 查看 server-id 配置是否生效了, 值
是否正确. log_bin 也可类似方式查看.


2. 在主 MySQL 上备份数据. 具体小步骤按照顺序执行如下:
  2.a) 锁定整个数据库使只读. 使用命令 flush tables with read lock;
  2.b) 备份数据库数据. 方法很多, 可自选. 我选择用 mysqldump, 如:
    mysqldump -h localhost -u root -p dbname > /tmp/dbbackup.sql
  2.c) 记录主服务器当前 log_bin 文件名和偏移量, 目的是在从服务器上使用其
  值从该位置开始进行数据的恢复. 使用命令 show master status \G
  *************************** 1. row ***************************
File: mysql-bin.000003
Position: 243
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set (0.00 sec)
记录下 File, Position 两项. 在配置从服务器时候会用到.

  2.d) 上述操作之后, 恢复写操作, 使用命令 unlock tables;

3. 在主 MySQL 中建立用于复制的账户, 并授权具有 replication slave 权限.
mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave_001'@'192.168.0.111'
IDENTIFIED BY 'password';
记录下用户名和密码.

使用这个账户进行复制, 其才具有必要且安全的权限. 一定不要用 root 账户.


4. 将备份的数据导入到从数据库. 可以进入 mysql 命令行, 执行
  source /tmp/dbackup.sql; 命令. 别的方法也可自选.


5. 配置从服务器的配置文件 my.cnf:
[mysqld]
server-id = 2     # 一定不能和主服务器相同, 也不能和别的从服务器冲突.
log_bin = /var/log/mysql/mysql-bin.log
replicate-do-db = test

网络上部分文章在这里配置 master-host, master-user 等, 我们实验了导致不能启动.
配置了之后重新启动, 并检查是否配置正确. 方法同步骤1中所述.

6. 在从服务器中 mysql 命令行执行:
mysql>CHANGE MASTER TO
     >   MASTER_HOST='192.168.0.100',    # 主 MySQL 地址
     >   MASTER_USER='slave_001',        # 用于复制的账户
     >   MASTER_PASSWORD='password',     # slave_001 的密码
     >   MASTER_LOG_FILE='mysql-bin.000003',     # 步骤2中记录的日志文件名和位置.
     >   MASTER_LOG_POS=243;
    
注意: 要检查 datadir (在我们机器配置中位于目录 /var/lib/mysql) 中是否有文件
master.info; 根据某些文档说必须要删除该文档, 才能正确执行 CHANGE MASTER 命令.
为了保险起见, 建议删除或改名该文件再执行 CHANGE MASTER 命令.

然后启动 slave, 使用命令: start slave; 检查 slave 状态: show slave status \G
正常情况下, slave 的两个线程 slave_io, slave_sql 的 running 状态是 yes.

此时, 可以试验在主服务器上执行更新操作(insert,update等), 然后验证从服务器上
是否进行了复制.

主从服务器在使用过程中还可能发生错误, 如我们已经遇到了在主服务器上执行的错误
SQL 语句导致 从服务器上 slave_sql 线程暂停堵塞(此时可看到 last_sql_error 信息).
因此要注意监控 slave 的相应状态, 遇到问题再去检查是什么原因并解决.

 

© 著作权归作者所有

刘军兴
粉丝 61
博文 189
码字总数 237645
作品 0
昌平
私信 提问
mysql如何主从同步?

一、使用完全备份文件恢复单个表----innobackupex--apply-log --export 导出表信息 .exp .cfgdiscard tablespace 删除表空间 .ibdimport tablespace 导入表空间 /gamedbdrop table t1; 1 按照...

庞然大悟
2018/01/01
0
0
主从同步、代理

一、 mysql主从同步(mysql AB复制) 1.1. 目的实现数据的自动备份 1.2. Mysql主从同步的结构 一主一从 一主多从 主从从 主主结构(互为主从) 配置一主一从: 公共配置: 1、 配置固定ip 2、...

常楠
2014/05/11
0
0
mysql多主多从架构与mysql-proxy读写分离

mysql多主多从架构与mysql-proxy读写分离 最近心血来潮想要部署几台mysql的服务器,实现一个多主多从的服务器架构,并且要在这个架构上利用mysql-proxy实现读写分离操作,之前只是搭建过一主...

烟头网管
2015/01/29
0
0
实现MySQL读写分离 部署集群基础环境(有图)

1 实现MySQL读写分离 1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示。其中192.168.4.10、192.168.4.20分别...

两条小鱼
2018/06/30
0
0
mysql高可用架构之MMM架构

什么是高可用:指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性 严重的主从延迟,主从复制中断,锁引起的大量阻塞 如何实现...

draian
2019/01/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dynamic-connectivity 动态连通性问题之 quick-union 算法

quick-union 的思想是:若对象 p 的 root_id 和对象 q 的 root_id 相等,则认为 p 和 q 连通。 若要将对象 p 和对象 q 连通(已知两对象未连通),则将 p 的 root_id 的值设为 q 的 root_id ...

Phpythoner_Alei
今天
33
0
OSChina 周六乱弹 —— 实在选不出来就唱国歌

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享阿冗的单曲《你的答案》。--祝大家在2020年都找到自己答案。 《你的答案》- 阿冗 手机党少年们想听歌,请使劲...

小小编辑
今天
10
0
Maven打包可执行Jar包的方法

在使用Java开发中,会使用到将工程打包成可执行的jar包的情况,那么在maven中怎么将项目中的依赖包都添加到jar中呢。在pom.xml中添加一下插件: <build><plugins><plugin><ar...

CapJes
今天
10
0
使用vue 开发地图类系统(openlayers.js)的注意。

使用vue 开发地图类系统的注意。 1、使用地图应该创建的对象 少使用 vue 的data 和计算属性(comments)存数据或是vuex。 为什么要要注意这个问题呢? 答:这个就要了解到vue的实现原理 。原理...

DY-Tao
昨天
7
0
web移动端学习:高德地图demo(一)

在高德地图开发中申请开发者资格,然后在控制台中新建应用,获得KEY; 新建模板HTML文件; <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>地图demo</title><scri......

dxiya
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部