快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

Linux数据库:MySQL主从同步设置和同步错误处理

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

注意:

1.两台服务器的数据库版本应相同。如果它们不一致,则从服务器的版本高于主服务器的版本。

2. MySQL执行实时数据同步,实际上是将mysql操作同步到从属服务器 ,而不是对实际数据执行相同的操作

步。 因此,在开始同步之前,两端的数据必须一致。

主服务器:192.168.0.1

从服务器:192.168.0.2

===? Master停止时的MySQL同步配置===

1.主服务器设置:

1,修改/etc/my.cnf

在[mysqld]部分

中添加参数

服务器ID = 1

日志箱

Sql-bin-update-same

2.为从属服务器创建一个连接帐户以进行同步

mysql \ gt; GRANT FILE ON *。 * TO备份@ 192.168.1.2,以” 1234″标识;

3.重新启动mysql服务:服务mysqld重新启动

此时,由于添加了log-bin参数,因此生成了索引。 /var/lib/mysql目录中有一个.index文件,用于记录数据库的事务日志。

2.从服务器设置:

1.修改/etc/my.cnf

加入[mysqld]部分

主主机= 192.168.0.1

主用户=备份

主密码= 1234

主端口= 3306

服务器ID = 2

Master-connect-retry = 60默认重试间隔为60秒

plicate-do-db = vbb ?告诉slave只更新vbb数据库

Replicate-ignore-db = mysql#未同步的数据库

Replicate-ignore-table = vbb.users#不同步vbb数据库的用户表

log-slave-updates = 1

2.重新启动从属服务器的mysql服务

3.从服务器从主服务器读取数据并开始同步

1,mysql> 带有读锁的FLUSH TABLES; #首先执行此操作,锁定主服务器


2.mysql> 从主加载数据? #语句,您必须仅对MyISAM引擎授予全局FILE和SELECT权限,对InnoDB表无用。


3.如果数据是InnoDB,则需要分别在服务器上导出表结构和数据,然后将其复制到从服务器。

导出整个数据库结构和数据:mysqldump-u用户名-p密码-h主机数据库> filename.sql

导出表的数据和结构:mysqldump-u用户名-p密码-h主机数据库表\\ filename.sql

仅导出数据库中表的数据:mysqldump-u用户名-p密码-h主机-T数据库表\ filename.sql

仅导出数据库中表的结构:mysqldump-u用户名-p密码-h主机-d数据库表\ filename.sql?

4.确保两端的数据一致后,开始同步

mysql \ gt; 从站启动;

5.查看从服务器的同步信息

mysql \ gt; 显示从站状态\\\\ G;

如您所见,Slave_IO_Running和Slave_SQL_Running列的值均为” Yes”,表示Slave的I/O和SQL线程正在正常运行。

6.将锁释放到主服务器

mysql \ gt; 解锁表;

=== Master仍在运行,如何配置Slave ===

停止了

注意:主从服务器的配置与上述相同。

1.首先检查主服务器上的同步日志信息

mysql \ gt; 显示主状态;

+——————+———-+————–+——————+

|? 文件? |? 位置? | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| Mysql-bin.000054 | 680 | | mysql |

+——————+———-+————–+——————+

您可以看到日志文件是:mysql-bin.000054,同步点是680

2.同步从服务器上的配置

Mysql> 从站停止; #mysql默认同步开始

mysql \ gt;将MASTER更改为MASTER_HOST =” 192.168.0.1″,MASTER_USER =” backup”,MASTER_PASSWORD =” 1234″,MASTER_LOG_FILE =” mysql-bin.000054″,MASTER_LOG_POS = 690;? #配置同步点

mysql \ gt; 从站启动; #打开同步

3.查看同步信息

mysql \ gt; 显示从站状态\\\\ G;

如您所见,Slave_IO_Running和Slave_SQL_Running列的值均为” Yes”,表示Slave的I/O和SQL线程正在正常运行。

4.配置完成

MYSQL服务器复制配置

这是根据我之前阅读的MYSQL复制文档,然后自己进行实验的过程。配置功能比较简单。

环境:

主服务器:

Redhat9

MySQL 5.0.16?机器名称:dbmaster

IP:192.168.0.111

从服务器:

Redhat9

Mysql5.0.16

机器名称:dbslave

IP:192.168.0.100

配置过程:

整个过程与MYSQL文档中的复制设置步骤相对应,但是它是特定的并标记了一些注意点。如果有兴趣的朋友可以阅读比较,它将更容易理解。

1.确认两个服务器的MYSQL版本 ,使用mysql-V命令查看

注意:(二进制日志)binlog格式在不同版本的MySQL之间可能有所不同,因此最好使用相同的版本。如果您不能满足要求,则必须确保主版本不能高于从版本

2. 在主服务器上为服务器设置连接帐户。必须授予该帐户REPLICATION SLAVE权限 。为了简单起见,我没有执行此步骤,而是直接使用了root帐户。

正常步骤是:

假设您的域是mydomain.com,则要创建一个用户名为repl的帐户。从属服务器可以使用此帐户从您域中的任何主机通过密码slavepass访问主服务器。要创建此帐户,请使用GRANT语句:

Mysql> GRANT REPLICATION SLAVE ON *。 *

-\ Gt; TO” repl” @”%。Mydomain.com”由” slavepass”标识;

如果要获得在从属服务器上执行” LOAD TABLE FROM MASTER”或” LOAD DATA FROM MASTER”语句的权限,则必须授予全局FILE和SELECT权限:

mysql \ gt;授予文件,选择,复制从属*。 * 至? ” repl” @”%。Mydomain.com”由” rep”标识;

3.在防止禁止写操作的同时,在主服务器上执行带刷新锁的FLUSH TABLES WITH READ LOCK语句。 :

Mysql>带有读取锁的刷新表;

然后在主服务器上拍摄数据快照。 (此时不要退出mysql提示符,如果退出,它将被解锁。打开一个新的ssh窗口以执行如下所述的归档打包操作)

说明:

操作系统:CentOS 5.x 64位

MySQL数据库版本:mysql-5.5.35

MySQL主服务器:192.168.21.128

MySQL从服务器:192.168.21.129

准备:

说明:执行以下操作在两个MySQL服务器192.168.21.128和192.168.21.129

备注:

建议将MySQL版本作为主从服务器使用相同的版本!

否则,您必须确保主服务器的MySQL版本高于从服务器的MySQL版本!

首先,配置IP,DNS和网关,以确保可以使用远程连接工具连接到服务器

其次,配置防火墙并打开端口3306

vi/etc/sysconfig/iptables #编辑

-A RH-Firewall-1-INPUT-m状态–state新-m tcp-p tcp–dport 3306-j ACCEPT #允许端口3306

特别说明:如果将这两个规则添加到防火墙配置的最后一行,导致防火墙无法启动,则应使用正确的规则被添加为默认值22在端口规则下方,添加后,防火墙规则如下:

############################################## #####

#由system-config-securitylevel编写的防火墙配置

#不建议手动定制此文件。

*过滤器

:输入接受[0:0]

:正向接受[0:0]

:输出接受[0:0]

:RH-Firewall-1-INPUT-[0:0]

-A INPUT-j RH-Firewall-1-INPUT

-A FORWARD-j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT-i lo-j接受

-A RH-Firewall-1-INPUT-p icmp–icmp-type any-j ACCEPT

-A RH-防火墙1-输入-p 50-j接受

-A RH-防火墙1-输入-p 51-j接受

-A RH-防火墙1-输入-p udp–dport 5353-d 224.0.0.251-j接受

-A RH-防火墙1-输入-p udp-m udp–dport 631-j接受

-A RH-防火墙1-输入-p tcp-m tcp–dport 631-j接受

-A RH-Firewall-1-INPUT-m状态–state已建立,相关-j接受

-A RH-防火墙1-输入-m状态-状态NEW-m tcp-p tcp–dport 22-j接受

-A RH-Firewall-1-INPUT-m状态–state新-m tcp-p tcp–dport 3306-j接受

-A RH-Firewall-1-INPUT-j REJECT–reject-with icmp-host-prohibited

提交

############################################## #####

/etc/init.d/iptables重新启动? #最后重新启动防火墙以使配置生效

三,关闭SELINUX

vi/etc/selinux/config

#SELINUX =强制执行? #COMMENTED

#SELINUXTYPE =有针对性? #注释掉

SELINUX =已禁用? #添加

:wq #保存并退出

setenforce 0? #立即生效

四,系统约定

软件包打包的源代码存储位置:/usr/local/src

源码包安装位置:/usr/local/软件名

五,下载软件包

1,下载MySQL

http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.35.tar.gz

2.下载cmake(MySQL编译工具)

http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz

以上软件包已上传到/usr/local/src目录

六,安装编译器工具和库文件(使用CentOS yum命令安装)

yum install-y make apr * autoconf automake curl curl-devel gcc gcc-c ++ gtk +-devel zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat *? cpp glibc libgomp libstdc ++-devel keyutils-libs-devel libsepol-devel libselinux-devel

krb5-devel? libXpm * freetype freetype-devel freetype * fontconfig fontconfig-devel吗? libjpeg * libpng * php通用php-gd gettext gettext-devel ncurses * libtool * libxml2 libxml2-devel补丁policycoreutils野牛

安装

说明:在两个MySQL服务器192.168.21.128和192.168.21.129上执行以下操作,安装mysql-5.5.35 >

以下是远程登录服务器并从命令行进行操作

首先,安装cmake

cd/usr/local/src

tar zxvf cmake-2.8.12.1.tar.gz

cd cmake-2.8.12.1

https://blog.csdn.net/chengxuyuanyonghu/article/details/configure

使? #compile

make install ? #安装

其次,安装mysql

groupadd mysql #添加mysql组

useradd-g mysql mysql-s/bin/false #创建用户mysql并加入mysql组,不允许mysql用户直接登录到系统

mkdir-p/data/mysql #创建一个MySQL数据库存储目录

chown-R mysql:mysql/数据/mysql? #设置MySQL数据库目录权限

mkdir-p/usr/local/mysql-5.5.35#创建一个MySQL安装目录

ln-s/usr/local/mysql-5.5.35/usr/local/mysql #创建到mysql目录的软链接,以方便以后使用配置

cd/usr/local/src

tar zxvf mysql-5.5.35.tar.gz #解压缩

cd mysql-5.5.35

cmake。-DCMAKE_INSTALL_PREFIX =/usr/本地/mysql?-DMYSQL_DATADIR =/数据/MySQL?-DSYSCONFDIR =/等? #配置

make ? #编译

make install #Install

cd/usr/本地/mysql

cp https://blog.csdn.net/chengxuyuanyonghu/article/details/support-files/my-huge.cnf?/etc/my.cnf? #复制配置文件(注意:如果/etc目录中默认存在my.cnf,则可以直接覆盖它)

vi/etc/my.cnf#以? [Mysqld] ?部分添加

datadir =/数据/MySQL的? ? #添加MySQL数据库路径

https://blog.csdn.net/chengxuyuanyonghu/article/details/scripts/mysql_install_db–user = mysql #生成mysql系统数据库

cp https://blog.csdn.net/chengxuyuanyonghu/article/details/support-files/mysql.server?/etc/rc.d/init.d/mysqld#将Mysql添加到系统启动

chmod 755/etc/init.d/mysqld#增加执行权限

chkconfig mysqld on #添加启动启动

vi/etc/rc.d/init.d/mysqld#EDIT

basedir =/usr/本地/mysql? #MySQL程序安装路径

datadir =/data/mysql #MySQl数据库存储目录

服务mysqld启动? ? #开始

vi/etc/profile #将mysql服务添加到系统环境变量:在末尾添加以下行

export PATH = $ PATH:/usr/local/mysql/bin

资源?/etc/个人资料? #使配置立即生效

以下两行将myslq库文件链接到系统默认位置,因此在编译PHP之类的软件时无需指定mysql库文件地址。

ln-s/usr/local/mysql/lib/mysql/usr/lib/mysql

ln-s/usr/local/mysql/include/mysql/usr/include/mysql

mkdir/var/lib/mysql #创建目录

ln-s/tmp/mysql.sock吗?/var/lib/mysql/mysql.sock#添加软链接

mysql_secure_installation? #设置Mysql密码,出现提示时按Y键两次输入密码

/usr/local/mysql/bin/mysqladmin-u root-p密码” 123456″? #或直接修改密码

至此,mysql安装完成!

配置文章

首先,配置MySQL主服务器(192.168.21.128)

mysql-u root-p ? #进入MySQL控制台

创建数据库osyunweidb ;? #创建数据库osyunweidb

插入mysql.user(主机,用户,密码)值(“localhost”,” osyunweiuser”,密码(” 123456″)); #创建用户osyunweiuser,密码123456

全部授予osyunweidb。 *发送给” osyunweiuser” @” 192.168.21.130″,由” 123456″标识,并带有授予选项; #来自192.168.21.130的授权用户osyunweiuser对数据库具有完全访问权限。注意:192.168.21.130这里是连接到数据库Web服务器IP

插入mysql.user(主机,用户,密码)值(“localhost”,” osyunweidbbak”,密码(” 123456″)); #创建MySQL主从数据库同步用户osyunweidbbak密码123456

同花顺特权; ? #刷新系统授权表

授予复制从属?上 *。 *发送到” osyunweidbbak” @” 192.168.21.129″(由” 123456″标识)并带有授予选项; #授权用户osyunweidbbak只能从IP 192.168.21.129访问主服务器192.168.21.128上的数据库,并且仅具有返回权限数据库

其次,将MySQL主服务器192.168.21.128中的数据库osyunweidb导入MySQL从服务器192.168.21.129 >

1,导出数据库osyunweidb

mysqldump-u root-p–default-character-set = utf8–opt-Q-R–skip-lock-tables osyunweidb \ gt;/home/osyunweidbbak.sql#在MySQL主服务器上操作,并将数据库osyunweidb导出到/home/osyunweidbbak.sql

注意:导出前,您可以进入MySQL控制台并执行以下命令

用读锁刷新表; #数据库只读锁定命令,以防止在导出数据库时写入数据

解锁表;? #解锁

scp/home/osyunweidbbak.sql root@192.168.21.129:/主页? #将主目录中的osyunweidbbak.sql数据库文件从服务器的主目录上载到MySQL

系统运行与维护www.osyunwei.com?温馨提醒:qihang01的原始内容已受版权保护,请注明出处和原始链接以供转载

2.将数据库导入到MySQL从服务器

MySQL的?-u root-p #输入从属服务器MySQL控制台

创建数据库osyunweidb; ? #创建数据库

使用osyunweidb #输入数据库

资源?/home/osyunweidbbak.sql#将备份文件导入数据库

mysql-u osyunweidbbak-h 192.168.21.128-p #测试从从服务器登录到主服务器

三,配置MySQL主服务器的my.cnf文件(192.168.21.128)

vi/etc/my.cnf#编辑配置文件,并在[mysqld]部分中添加以下内容

服务器ID = 1? #将主服务器的服务器ID设置为1。注意:如果原始配置文件中已经有此行,则无需添加它。

log-bin = mysql-bin #启动MySQ二进制日志系统,注意:如果原始配置文件中已经有此行,则您不需要添加。

binlog-do-db = osyunweidb #要同步的数据库的名称。如果有多个数据库,则可以重复此参数,每个数据库一行

binlog-ignore-db = mysql? #不同步mysql系统数据库

:wq ! #保存并退出

服务mysqld?重新启动#重新启动MySQL

mysql-u root-p吗? #输入mysql控制台

显示类似” server_id”的变量? ? #检查server-id的值是否为1

mysql \ gt;显示类似” server_id”的变量;

+—————+——-+

|变量名|价值|

+—————+——-+

| server_id | 1 |

+—————+——-+

设置1行(0.00秒)

显示主人身份;? #查看主服务器,出现以下类似信息

mysql \ gt;显示主人身份;

+——————+———-+————–+——————+

|档案|职位| Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

|? mysql-bin.000011 ? | 107 ? |奥云韦德

| MySQL的? |

+——————+———-+————–+——————+

设置1行(0.00秒)

注意:请记住此处的File值:mysql-bin.000011和Position:107的值,稍后将使用。

四,配置MySQL从属服务器的my.cnf文件(192.168.21.129)

vi/etc/my.cnf#编辑配置文件,并在[mysqld]部分中添加以下内容

服务器ID = 2? #设置服务器ID,将其值修改为2,这意味着它来自数据库

log-bin = mysql-bin #启动MySQ二进制日志系统,注意:如果原始配置文件中已经有此行,则您不需要添加。

复制-do-db = osyunweidb? #要同步的数据库名称,如果有多个数据库,则可以重复此参数,每个数据库一行

复制-ignore-db = MySQL的? #不同步mysql系统数据库

read_only #设置数据库只读

:wq ! ? #保存并退出

服务mysqld重启? #重新启动MySQL

MySQL的?-u root-p #输入MySQL控制台

显示类似” server_id”的变量; #查看server-id的值,必须设置为2以上,否则请返回以修改配置文件

mysql \ gt;显示类似” server_id”的变量;

+—————+——-+

|变量名|价值|

+—————+——-+

| server_id | 2 |

+—————+——-+

设置1行(0.01秒)

奴隶站;? #停止从属同步过程

将master更改为master_host =” 192.168.21.128″,master_user =” osyunweidbbak”,master_password =” 123456″,master_log_file =” mysql-bin。000011 ?,master_log_pos = 107 ; #执行同步语句

从属启动#启动从属同步过程

显示从属状态\\\\ G ? #查看从站同步信息,出现以下内容

mysql \ gt;显示从站状态\\\\ G

*************************** 1.行******************** *******

Slave_IO_State:等待主机发送事件

Master_Host:192.168.21.128

Master_User:osyunweidbbak

Master_Port:3306

Connect_Retry:60

Master_Log_File:mysql-bin.000011

Read_Master_Log_Pos:107

Relay_Log_File:mysqlslave-relay-bin.000004

Relay_Log_Pos:253

Relay_Master_Log_File:mysql-bin.000011

Slave_IO_Running:是

Slave_SQL_Running:是

Replicate_Do_DB:osyunweidb

Replicate_Ignore_DB:mysql

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno:0

Last_Error:

跳过计数器:0

Exec_Master_Log_Pos:107

Relay_Log_Space:560

直到条件:无

直到日志文件:

直到Log_Pos:0

Master_SSL_Allowed:否

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:否

Last_IO_Errno:0

Last_IO_Error:

Last_SQL_Errno:0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id:1

设置1行(0.00秒)

mysql \ gt;

注意:

Slave_IO_Running:是

Slave_SQL_Running:是

上面两个参数的值为Yes,表示配置成功!

测试文章

测试MySQL主从服务器是否正常运行

1,输入MySQL主服务器(192.168.21.128)

mysql-u root-p #输入MySQL控制台

使用osyunweidb? #输入数据库

CREATE TABLE test(id int不为null的主键,名称为char(20)); #创建测试表

2.输入MySQL从服务器

mysql-u root-p #输入MySQL控制台

使用osyunweidb? #输入数据库

显示?桌子; #查看osyunweidb表结构,您将看到一个新的表测试,表明数据库同步成功

mysql \ gt;显示?桌子;

+———————-+

| Tables_in_osyunweidb |

+———————-+

|测试

+———————-+

设置1行(0.00秒)

至此,Linux下MySQL数据库的主从同步配置完成了!

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1922638