史上最详细MySQL5.5复制配置步骤,与以前版本的有所不同

史上最详细MySQL5.5复制配置步骤,与以前版本的有所不同

操作系统:CentOS 5.8

MySQL版本:5.5.x

原来状况:数据库在一台机器上,已经有一些生产数据

目标:主主复制。两台数据库服务器设置成主主复制方式,即对任何一台的更改都会自动同步到另外一台。

第一台:ip地址为 xxx.xxx.xxx.156  主机名 s156

第二台:ip地址为 xxx.xxx.xxx.170  主机名 s170

注:本文中的ip地址均采用 xxx. 形式,运用时根据实际情况修改。

本文链接:http://codingstandards.iteye.com/blog/1535994 转载请注明出处

 

操作步骤一:停止应用运行

在修改mysql配置之前,应该停止与数据库有关的进程(程序),比如:

1. tomcat或其他Web应用容器

使用 service tomcat stop 停止

或者进入 tomcat/bin 执行 ./shutdown.sh)

2. crontab 里面设置的某些与数据库有关的定时任务。

比如:那些检测tomcat是否启动的定时任务。

可以先用 crontab -e 打开,把相应项注释掉(在前面加#号)。

3. 其他与数据库有关的进程。

 

 

操作步骤二:检查主机名

什么情况下需要修改主机名?

如果发现shell命令行提示符是

[root@localhost ~]#

或者用hostname命令得到主机名是localhost

[root@localhost ~]# hostname
localhost

 

为什么需要确认主机名是否正确?

1. 因为有些时候,安装系统的人比较懒,没有在安装时设置主机名;

2. mysql运行时生成日志文件需要用到主机名,尤其是配置成复制(replication)后;

3. 如果在配置了复制之后再进行修改主机名,会造成mysql执行错误,这是我曾经碰到过的情况。

 

如果不需要修改主机名,跳到下一个步骤。

 

注意:需要对两台服务器检查和修改。

 

修改主机名的步骤:

1. 停止与主机名有关系的程序或服务,比如mysql(它生成的日志文件名中包含主机名)

service mysql stop

2. 使用hostname命令修改主机名(假定新主机名为newname)

hostname newname

比如:hostname s156

3. 在/etc/hosts文件中配置主机名的解析(假定ip地址记为ip,主机名newname,域名为yourdomain.com)

127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6

ip   newname.yourdomain.com newname

比如:xxx.156 s156.hndy16.com s156

4. 在/etc/sysconfig/network中修改HOSTNAME=newname

比如:HOSTNAME=s156

5. 最好重启机器,如果不允许的话,重新登录也行

重启使用 reboot 命令

重新登录使用 exit 命令

6. 看一下命令行提示符和hostname是否正确

[root@s156 ~]# hostname
s156

7. 重新启动第一步中停止的程序或服务,比如mysql

service mysql start

 

操作步骤三: 创建复制账号

需要在两台数据库上创建,假定用户名和密码都是rep。

 

先登录mysql

mysql -pxxx

创建用户账号,只赋予slave权限
grant replication slave on *.* to 'rep'@'xxx.170' identified by 'rep';

清空所有表和块写入语句
flush tables with read lock;

 

PS:2012.06.08

如果真的用rep账号去登录,就会只看到两个数据库。

[root@s170 ~]# mysql -prep -urep -hxxx.156
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12718
Server version: 5.5.24-log MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.01 sec)

mysql> quit
Bye
[root@s170 ~]#

 

操作步骤四:手工复制数据库

如果两台服务器都是新装的,可以跳过这一步。

 

如果原来单机上有数据,那么需要将数据复制到另外一台上面,让它们在开始复制之前的状态相同。

 

有两种方式:

1. 复制文件法:将数据库的数据文件直接复制到另外一台;

2. 使用 mysqldump 工具导出数据,然后导入到另外一台。

注意:不是所有的数据需要复制,比如 mysql 数据库、information_schema 数据库 和 performance_schema 数据库。

如果 test数据库中没有什么重要数据,也不必复制。

 

我经常采用第2种方式:

mysqldump -pxxx --default-character-set=gbk dbname >dbname.sql

tar zcf dbname.tar.gz dbname

 

通过sftp传到另外一台上面

sftp other_hostname

put dbname.tar.gz

quit

 

或者从另外一台机器上sftp

sftp source_hostname

get dbname.tar.gz

quit

 

将数据解压

tar zxf dbname.tar.gz

导入到数据库中

mysql -pxxx --default-character-set=gbk <dbname.sql

 

操作步骤五:停止mysql服务

操作命令是

service mysql stop

 

此步的目的是避免数据库中的数据在我们修改配置文件时被修改。

当然如果所有与数据库有关的应用程序和定时任务都已经停止,那么应该不会出现这种情况。

但是,不怕一万,就怕万一。

 

操作步骤六:修改mysql配置文件

配置文件 /etc/my.cnf

这是其中一台的配置,另外一台稍作修改就可以了。

s156上 /etc/my.cnf 写道
[client]
default-character-set=gbk

[mysqld]
#default-character-set=gbk
character-set-server=gbk
# server
server-id=156
log-bin=mysql-bin
binlog-ignore-db=mysql
# replication
#master-host=xxx.170
#master-port=3306
#master-user=rep
#master-password=rep
#master-connect-retry=60
# auto_incr
auto_increment_offset=1
auto_increment_increment=2
 

 

另外一台机器上的配置

s170上 /etc/my.cnf 写道
[client]
default-character-set=gbk

[mysqld]
#default-character-set=gbk
character-set-server=gbk
# server
server-id=170
log-bin=mysql-bin
binlog-ignore-db=mysql
# replication
#master-host=xxx.156
#master-port=3306
#master-user=rep
#master-password=rep
#master-connect-retry=60
# auto_incr
auto_increment_offset=2
auto_increment_increment=2
 

要点1:默认字符集都应该一样,比如gbk:

[client] 的配置名称为 default-character-set

[mysqld] 的配置名称为 character-set-server  (注:与以前版本的mysql不同,5.5版不认识 default-character-set)

 

要点2:server-id 要互不相同才行,可以是任意的正整数

为了更容易清楚是那一台服务器,可以设置为 ip地址的最后那个数字。

 

要点3:log-bin 和 binlog-ignore-db 配置

以前版本的mysql,binlog-ignore-db 项也可以配置成 set-variable=binlog-ignore-db=mysql,但5.5版不行了。

 

要点4:不能配置 master-host 等项

上面的几个配置文件中 master-host, master-port, master-user, master-password 等项都注释掉了,因为5.5版不支持这种配置方式了,

要改用 change master to 语句(在后面的步骤中会使用)

 

要点5:自动递增的设置

在使用mysql做数据库时,经常会使用 auto_increment 整数类型的字段作为主键,这种主键由mysql服务器生成,每次自动递增1。

如果是在主主复制方式下,就会产生冲突,即有可能两台服务器产生同一主键值。

所以 mysql 提供了 auto_increment_offset 和 auto_increment_increment 配置项,

其中 auto_increment_increment 是每次递增的数值,应该大于等于复制集群中服务器的数量,比如在主主复制中可以设置为2;

auto_increment_offset 是基数,可以从1开始到auto_increment_increment,每台服务器应该不同,比如一台设置为1,另外一台设置2。

注意:如果是应用程序模拟生成自动递增,可能需要修改应用程序。

 

PS: 2012.06.08

如果只复制特定的数据库,可以加入如下配置(假定数据库名为qzt)

binlog-do-db=qzt

replicate-do-db=qzt

 

操作步骤七:启动mysql服务

service mysql start

 

如果不能启动,那么就要查看 /var/lib/mysql/*.err 文件的内容去分析启动失败的原因,修改一下配置文件再重新启动。

 

 

操作步骤八:更改 master 设置

由于5.5版不再支持配置文件中直接设置 master-host 等数据,只能使用 change-master-to 命令,如下所示:

CHANGE MASTER TO
MASTER_HOST='master_host_name',
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;

 

 

注意:两台服务器上都要执行

 

实际例子:

在s156上

change master to master_host='xxx.170', master_port=3306, master_user='rep', master_password='rep';

在s170上

change master to master_host='xxx.156', master_port=3306, master_user='rep', master_password='rep';

 

之后启动从服务器线程

start slave 或者  slave start

 

 

执行示例:

mysql> change master to master_host='xxx.156', master_port=3306, master_user='rep', master_password='rep';
Query OK, 0 rows affected (0.01 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

 

 

操作步骤九:确认并验证配置

使用 show slave status\G 查看从服务器状态。

使用 SHOW VARIABLES LIKE 'auto_inc%'; 查看自动递增设置。

在一台上创建测试表、插入和更新数据,到另外一台上是否被复制。

 

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: xxx.170
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 107
               Relay_Log_File: s156-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           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: 408
              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: 170
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 2     |
| auto_increment_offset    | 1     |
+--------------------------+-------+
2 rows in set (0.00 sec)

 

mysql> use test
Database changed
mysql> create table test1 (id integer not null primary key);    
Query OK, 0 rows affected (0.00 sec)

 

在另外一台看看是否复制过来了

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test1          |
+----------------+
1 rows in set (0.00 sec)

 

更多的确认测试可自行进行,比如:insert/update/delete等操作。

 

操作步骤十:恢复应用运行

与操作步骤一对应,要把应用程序和定时任务恢复过来。

 

比如:

1. tomcat等应用服务器。

2. crontab中的与数据库有关的定时任务。

3. 其他与数据库有关的程序。

 

 

配置结束,大功告成!

 

 

 

 

 

 

 

 

 

 

 

 

 

MySQL5.7配置主从同步详细步骤 ##所需文件 阅读详情

相关推荐

MySQL复制的安装和配置

MySQL复制是一种常用的数据复制技术,用于在多个MySQL数据库服务器之间实现数据的同步。MySQL复制是一种常用的数据复制技术,用于在多个MySQL数据库服务器之间实现数据的同步。根据您的需求,您可能需要进一步了解有关MySQL复制的高级配置选项MySQL复制的安装和配置。您可以从MySQL官方网站下载适用于您的操作系统的安装程序,并按照安装向导进行安装。您可以从MySQL官方网站下载适用于您的操作系统的安装程序,并按照安装向导进行安装。我们将涵盖主数据库和从数据库的设置,以及必要的源代码示例。

CddaDebugging的博客 327

mysql5 备份 拷贝_MySQL5.5.x数据备份(data目录拷贝方式)

【免安装版mysql密码设置】从官网下载解压缩免安装版MySQL服务器:mysql-5.5.28-win32.zip解压至任意目录,例如D:\mysql。将my_huge.ini文件复制一份改名为my.ini。下载后的版本root账户是没有设置密码的。命令行中代码输入:>cd D:\mysql\bin>mysql –uroot –p回车,再回车即可进入mysql命令行客户端。此时需要设...

weixin_34528410的博客 412

从理论到板级:FOC电机驱动硬件电路全链路设计解析

本文从硬件工程师视角,深度解析FOC电机驱动从理论到板级实现的全链路设计。重点剖析了电源保护、核心采样电路、三相逆变桥与驱动电路等关键硬件模块的设计要点与实战经验,强调硬件是FOC算法可靠运行的基石,并提供了PCB布局布线的核心原则,帮助开发者构建高性能、高可靠性的电机驱动硬件平台。

weixin_29240711的博客 332

MySQL 主从复制之多线程复制

浅看 MySQL 5.5、5.6、5.7、8.0(5.7.22) 多线程(并行)复制的演进

misakivv的博客 1820

STM32F4_DHT11数字温湿度传感器

开机的时候先检测是否有DHT11存在,如果没有,则提示错误。DHT11和DS18B20相同,传感器输出的都是未编码的二进制数字。本节我们将利用STM32F4来读取DHT11的温湿度传感器,获取环境的温度和湿度值。因此:温湿度的读取方式就是整数部分的二进制转换成十进制放在整数部分;小数部分的二进制转换成十进制放在小数部分。DHT11和MCU的一次通讯时间最大3ms,主机连续向DHT11采样的间隔建议不小于100ms。DHT11是广州奥松有限公司生产的一款温湿度一体化的数字传感器。数据分小数部分和整数部分。

light_2025的博客 3431

OpenCV快速入门:绘制图形、图像金字塔和感兴趣区域

OpenCV是一个强大的计算机视觉库,广泛应用于图像处理、计算机视觉和机器学习等领域。本文将介绍OpenCV中的一些基础功能,包括如何绘制图形、创建图像金字塔以及如何处理感兴趣区域(ROI)。

吾家有猫名探花的博客 1962

mysql5.5 数据复制_mysql5.5.27主从复制

主从复制原理:1 复制架构图![](https://box.kancloud.cn/2016-03-29_56fa2a0c3a35d.jpg)2 初始化图![](https://box.kancloud.cn/2015-11-06_563c4ad5177e9.JPG)3 复制原理mysql使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上)。当发出start slave时,从服务...

weixin_34521351的博客 198

富芮坤fr8008gp 240X280 lvgl项目启动

fr8008gp_240X280_lvgl项目启动

cheng___yi的博客 1757

mysql 5.5 特性_MySQL5.5复制新特性

MySQL5.5复制新特性一.MySQL5.5复制改进MySQL5.5版本对MySQL Replication进行了多项的改良,以提供数据的完整性,性能和应用灵活性更高水平。1.Semisynchronous Replication:主从之间的等待机制2.Slave fsync tuning:调整slave fsync包括sync-master-info,sync-relay-log,sync-r...

weixin_30033489的博客 205

基于YOLOv11的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

基于YOLOv11的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1218

结构函数详解

C3M系列覆盖从1 kW到60 kW功率范围,器件Rdson低、开关速度快(Eon/Eoff低),支持高温工作(结温高达175–225°C)。型号电压 (V)Rdson (mΩ, 典型@25°C)电流 (A, 连续@25°C)封装类型典型应用功率 (kW)65012022TO-247-41–106506035TO-247-35–2065060355–2012002180TO-247-310–40120016100TO-247-420–601200。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 152

【实战】小红书笔记爬虫终极指南:模拟滑动加载,抓取图文(2026最新版)

小红书作为国内最大的生活方式分享社区,每天产生海量的图文笔记。对于数据分析、市场调研、竞品分析等需求,爬取小红书公开笔记成为一项常见任务。然而,小红书的反爬机制日益升级——接口加密、动态Token、滑动验证、设备指纹……本文将深入剖析小红书Web端和App端的爬取技术,手把手教你用Python实现模拟滑动加载、自动抓取图文笔记的完整爬虫系统。全文包含大量代码、原理分析和排坑经验,适合有一定爬虫基础的读者进阶学习。目录前言一、小红书反爬机制概览二、环境准备2.1 Python环境2.2 浏览器驱动。

2201_76125261的博客 760

Mysql相互复制(互为主从)详细配置步骤

文章目录前言1. 设置数据库的配置文件库1:库22. 进入数据库创建从账号库1:库2:3. 查看生成的binlog日志,记录下来日志名字和起始位置。库1:库2:4. 进入数据库进行从读设置,指定要读的主服务库的地址、用户、密码、日志等库1:库2:5. 启动复制,并查看。库1:库2: 前言 环境:Centos7 数据库:Mysql5.7 库1地址:10.8.161.9 库2地址:10.8.161.18 1. 设置数据库的配置文件 库1: vim /etc/my.cnf [mysql] 下添加如下 se

King config 1万+

用群辉NAS打造影视墙(Jellyfin篇)

之前的文章提到过,用群辉NAS组建影视播放系统可以采用官方提供的Video Station套件,不过影视信息配比较差,响应速度也欠佳,今天我们就聊聊别的套件。在影音媒体方面,常见的还有Emby、Plex、Jellyfin。本文主讲Jellfin的原因是它胜在免费,而且功能比较齐全,完全够用。详细信息可以参考Jellyfin的官网:https://jellyfin.org/

dgnankai的专栏 7322

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mysql5.7以上版本配置my.ini的详细步骤

这篇文章主要为大家详细介绍了mysql5.7以上版本配置my.ini的详细步骤,文中每一步介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件以及服务无法启动的解决办法以及修改初始密码的方法。 mysql官网下载地址 以5.7.20版本为例 首先安装包解压后,没有网上教程里面提到的data文件夹和my-default.ini,如下图所示 配置环境变量请参

weixin_47536319的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Linux下搭建Mysql主从复制详细步骤(Mysql版本5.7.35)

Linux下搭建Mysql主从复制详细步骤(Mysql版本5.7.35) 本篇将跟大家一起搭建Mysql主从复制,如果你还来没有安装mysql,请看博主的这篇mysql-5.7.30的安装教程 1、原理 1.master的I/O线程将数据写入binlog中; 2.slave的I/O线程从master的binlog中读取数据,写入自己的Relay_Log_File日志中; 3.slave的SQL线程从Relay_Log_File日志中解析sql,完成数据的复制。 2、应用场景 1.从服务器作为主服务器的实时

D的博客 2467

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Linux下搭建Mysql主从复制详细步骤(Mysql版本5.7.30)

前言 本篇将跟大家一起配置Mysql主从复制,包括两个场景:1、主库有数据的情况;2、主库无数据。如果你还来没有安装mysql,请看博主的这篇mysql-5.7.30的安装教程 1、原理 master的I/O线程将数据写入binlog中; slave的I/O线程从master的binlog中读取数据,写入自己的Relay_Log_File日志中; slave的SQL线程从Relay_Log_File日志中解析sql,完成数据的复制。 2、应用场景 从服务器作为主服务器的实时数据备份 主从服务器实

夏夜凉月 5649

linux 安装mysql史上最详细的安装步骤

1.先下载mysql到本地 链接:https://pan.baidu.com/s/13Qgjlp_z550qUA4daa9KGw 提取码:crkr 2.然后将mysql传入到linux里面,这里我是使用xshell上传的,需要安装一个插件 3.安装好之后,输入rz,选择你的mysql(我在这里使用rz指令是在根目录),所以上传之后的mysql也会在根目录 4.在这里可以看到mysql上传到l...

qq_42463843的博客 2448

mysql5.7以上版本配置及my.ini的详细步骤

参考地址https://www.jb51.net/article/172172.htm Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini和my.ini文件以及服务无法启动的解决办法以及修改初始密码的方法。 mysql官网下载地址 以5.7.20版本为例 首先安装包解压后,没有网上教程里面提到的data文件夹和my-default.i...

weixin_40918145的博客 7884

Linux下搭建Mysql主从复制详细步骤(Mysql版本5.7.28)

在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用。

qq_32760237的博客 1874
上一篇: 怎样使用rpm命令一次性删除依赖的软件包
下一篇: 五步轻松搞定Linux下的文件同步(备份)
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值