资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

包含mysql服务器怎么同步的词条

如何设置MySQL同步

主库配置:

成都创新互联主营泗水网站建设的网络公司,主营网站建设方案,成都APP应用开发,泗水h5小程序制作搭建,泗水网站营销推广欢迎泗水等地区企业咨询

1 修改 my.ini 文件

[mysqld]

log-bin = /var/lib/mysql/log-bin

binlog-do-db=lucia_test_abc

server-id = 1 

2 在主库创建新数据库

mysql create database lucia_test_abc;

Query OK, 1 row affected (0.00 sec)

然后重启 mysql

3 添加 backup 账号并授权给从服务器

mysql GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@’10.211.55.3’ IDENTIFIED BY '123456';

Query OK, 0 rows affected (0.01 sec)

p.s. 10.211.55.3 是从服务器的 IP 地址

4 查询主库状态 

mysql show master status; 

记一下 FILE 及 Position 的值 后面配置从服务器的时候要用到

File:log-bin.000003

Position:106

Binlog_Do_DB:lucia_test_abc

至此 主库配置完毕

从库配置:

1 在从库也创建数据库

库名字要和主库保持一致

2 修改 my.ini 文件

[mysqld]

server-id=2  

replicate-do-db= lucia_test_abc

保存退出,然后重启 mysql:

net stop mysql 

net start mysql

3 设置登录主数据库的账号和密码等信息

mysql

change master to 

master_host='10.211.55.6',master_user='root',master_password='123456', 

master_log_file='log-bin.000003',master_log_pos=106;

启动从库:

mysql start slave;

p.s. 

10.211.55.6 是主服务器的 IP 地址

master_log_file 就是主库的 File

master_log_pos 就是主库的 Position

4 查看从库的状态信息

mysql show slave status \G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

两个都是 Yes  至此 从库配置完毕

如何才能配置MySQL同步服务器

1. 在主服务器上为从服务器建立一个用户:

grant replication slave on *.* to '用户名'@'主机' identified by '密码'; (在MySQL 4.0.2以前,用 FILE 权限来代替 REPLICATION SLAVE)

如果打算在slave上执行 LOAD TABLE FROM MASTER 或 LOAD DATA FROM MASTER 语句,那么必须给该帐户授予附加权限:

授予全局 SUPER 和 RELOAD 权限。

授予对想要加载的所有表上的 SELECT 权限。在master上任何没有 SELECT 权限的表都会被 LOAD DATA FROM MASTER 略过。

2. 编辑主服务器的配置文件:/etc/my.cnf

server-id = 1

log-bin

binlog-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可

binlog-ignore-db=不需要备份的数据库苦命,如果备份多个数据库,重复设置这个选项即可

3. 编辑从服务器的配置文件:/etc/my.cnf

server-id=2 (配置多个从服务器时依次设置id号)

master-host=主机

master-user=用户名

master-password=密码

master-port=端口

replicate-do-db=需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可

记得先手动同步一下主从服务器中要备份的数据库,然后重启主,从服务器。

要验证主从设置是否已经成功,可以登录从服务器输入如下命令:

mysql show slave statusG

得到的列表会有类似下面的数据:

Slave_IO_State: Waiting for master to send event

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果后面两个选项不全是Yes,那就说明你前面某个步骤配置错了。

如果你的设置是正确的,尝试在主服务器上插入若干条记录,然后你再转到从服务器,会发现相应的新记录已经自动同步过来了。

如果你的主从服务器已经配置好了,那么你在应用程序中,只要保证所有的insert/delete/update操作是在主服务器上进行的,那么相应的数据变化会自动同步到从服务器上,这样,我们就可以把select操作分担到多台从数据库上,从而降低服务器的载荷。

如果你想使用复制数据文件的方式来备份数据库,只要在从服务器上的mysql命令行先键入slave stop;然后复制数据库文件,复制好了,再在mysql命令行键入slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的mysql无需停止。

-----------------------------------------------------------------------------------

提示:如果修改了主服务器的配置,记得删除从服务器上的master.info文件。否则从服务器使用的还是老配置,可能会导致错误。

-----------------------------------------------------------------------------------

注意:关于要复制多个数据库时,binlog-do-db和replicate-do-db选项的设置,如果要备份多个数据库,只要重复设置相应选项就可以了。

比如:

binlog-do-db=a

binlog-do-db=b

replicate-do-db=a

replicate-do-db=b

怎么实现两台服务器的mysql数据同步

这种架构一般用在以下三类场景

1. 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的操作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。

2. 用来聚合前端多个 Server 的分片数据。

同样,按照数据切分方向来讲,属于水平切分。比如图 3,按照年份拆分好的数据,要做一个汇总数据展现,那这种架构也非常合适。实现方法稍微复杂些:比如所有 Server 共享同一数据库和表,一般为了开发极端透明,前端配置有分库分表的中间件,比如爱可生的 DBLE。

3. 汇总并合并多个 Server 的数据

第三类和第一种场景类似。不一样的是不仅仅是数据需要汇总到目标端,还得合并这些数据,这就比第一种来的相对复杂些。比如图 4,那这样的需求,是不是也适合多源复制呢?答案是 YES。那具体怎么做呢?

MySQL 5.7.30 主主同步

在MySQL服务器1中,添加如下配置:

在MySQL服务器2中,添加如下设置:

在这里两台MySQL的配置文件,需要对auto_increment_offset字段,设定不同值。因为如果mysql中有自增长字段,不设定这个参数会起冲突,会报duplicate....的报错。

auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535

auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535

做主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2,这样可以避免两台服务器同时做更新时,自增长字段的值之间发生冲突。

配置好两台mysql的my.cnf配置文件后,service mysqld restart 重启mysql服务。

在Mysql服务器1中,

在MySQL服务器2中,做如上同样的操作,然后将服务器1的file和position值设定到服务器2中,服务器2的file和position值输入到服务器1中。

在MySQL服务器1中,输如下命令:

在MySQL服务器2中,输如下命令:

范例如下图:

配置完后,分别在两台服务器上输show slave status ;

如果出现如下两个字段都是on的状态,则主主备份搭建完成。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

在实际测试配置中,由于MySQL服务器2是克隆的MySQL服务器1的,所以start slave 后,show slave status 出现了Slave_IO_Running: No ,然后有如下报错信息。告知是因为两个MySQL服务器的UUID相重复了。

只需要,将basedir,即/use/local/mysql/data中的auto.cnf文件删掉后,重启mysql,就会出现新的auto.cnf文件,里面有新的UUID

如何实现同一台mysql服务器中不同数据库之间的数据同步

1.主上修改my.cnf文件:

server-id=1

log-bin=mysql-bin

2.从上修改配置文件 my.cnf

server-id=2

relay-log=relay-bin

read-only =1

replicate-ignore-db = mysql

replicate-ignore-db = test

replicate-ignore-db = information_schema

#replicate-wild-do-table = tt.admin

replicate-wild-do-table = my_db.stu // 所要同步的数据库的单个表

3. 创建 同步的用户(主上)

grant replication client,replication slave on *.* to rep@'10.41.50.105' identified by 'root';

4.同步到主库(在从上操作)

change master to master_host='10.41.50.80',master_user='rep',master_password='root';

5.在从上验证:

show slave status\G;

主从同步某些表


文章标题:包含mysql服务器怎么同步的词条
文章分享:http://cdkjz.cn/article/hispps.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220