数据库同步工具
sqlserver,Mysql数据同步软件

mysql主从同步 实现读写分离 自己记录

购买事宜请联系QQ:1793040

1.分别在centos7系统上安装mysql 5.7?—–版本是相同的

2.master?主服务器配置

2.1配置文件my.cnf修改

2.2创建从属服务器的用户和权限

2.3重新启动mysql服务

2.4查看主服务器的状态

3.从属从服务器配置

3.1修改配置文件my.cnf

3.2重新启动mysql服务

3.3连接主服务器master

3.4启动从站数据同步

3.5查看奴隶信息

4.测试

5.解决问题

为了解决大量并发访问,大型网站远远不够。在网站上实现分布式负载平衡。当涉及到数据业务层和数据访问层时,如果它仍然是传统的数据结构,或者仅依靠一台服务器来处理如此多的数据库连接操作,则数据库将不可避免地崩溃,尤其是在数据丢失的情况下。后果更加难以想象。这时,我们将考虑如何减少与数据库的连接。让我们今天进入我们的主题。

使用主从数据库实现读写分离,以分担主数据库的压力。在多台服务器上部署mysql,将其中一台视为主数据库,另一个作为实现主从同步的从数据库。主数据库负责主动写操作,而从数据库仅负责主动读操作(从数据库仍然会被动执行写操作)。维护数据一致性),从而可以在很大程度上避免数据丢失的问题,它还可以减少数据库连接并减轻主数据库上的负载

在上述模型中,Mysql-A是主服务器,它是主服务器,而Mysql-B是从服务器,它是从服务器。

Mysql-A中的数据库事件(例如,修改数据库的sql操作语句)存储在日志系统A中,并通过网络在相应端口(默认值为3306)发送到Mysql-B )。在Mysql-B收到它之后,将其写入本地日志系统B,然后在数据库Mysql-B中一个接一个地完成数据库事件。

日志系统A是MYSQL日志类型的二进制日志,专门用于保存修改数据库表的所有操作,即bin日志。请注意,MYSQL将执行该语句并释放锁”写入二进制日志”以确保事务安全性。

日志系统B不是二进制日志。因为它是从MYSQL-A二进制日志复制的,所以它不是由其自身数据库的更改引起的。有点中继感。它称为中继日志。中继日志。

通过上述机制,可以保证Mysql-A和Mysql-B的数据库数据是一致的,但是必须有时间上的延迟,即Mysql-B的数据是滞后的。因此,会出现这样的问题,Mysql-A数据库操作可以同时执行,但是Mysql-B只能从中继日志中一个接一个地读取和执行。如果Mysql-A频繁写入,则Mysql-B可能无法跟上。

主从同步复制具有以下方法:

(1)同步复制,主更改,必须等待slave-1 ,Slave-2,…,slave-n仅在完成后才能返回。

(2)对于异步复制,主服务器仅需要完成自己的数据库操作。至于从站是否收到二进制日志以及操作是否完成,则无关紧要。 MYSQL的默认设置。

(3)对于半同步复制,主服务器仅保证其中一个从服务器成功执行并返回,而与其他从服务器无关。此功能是Google针对MYSQL引入的。

本文介绍在centos 7系统上实现的mysql5.7数据库的主从同步配置,以实现读写分离操作。

本文中两个服务器的IP地址是主服务器()和从服务器()。

分别在这两台服务器上创建一个后端数据库,以供以后测试。

[root @ localhost mysql]#vim/etc/my.cnf

#在[mysqld]中添加:

server-id = 1

log_bin = master-bin

log_bin_index = master-bin.index

binlog_do_db =后端

#备注:

#server-id唯一的服务器标识符。

#log_bin启动MySQL二进制日志,这是数据同步语句,这些语句将从数据库中一个接一个地执行。

#binlog_do_db指定要记录二进制日志的数据库,即要复制的数据库的名称。如果复制了多个数据库,请重复设置此选项。

#binlog_ignore_db指定不记录二进制日志的数据库,即不需要复制的数据库的名称。如果有多个数据库,请重复设置此选项。

#应注意,binlog_do_db和binlog_ignore_db是互斥的选项,通常只需要一个。

#输入mysql数据库

[root @ localhost mysql]#mysql-uroot-p

输入密码:

#创建一个数据库中的masterbackup用户和权限

mysql>在*上授予复制从属。 *到masterbackup @” 122.51.83。*”,以” 123456″标识;

#备注

#192.168.17。%通配符,表示0-255 IP可以访问主服务器,在正式环境中,请配置指定的从服务器IP

#如果将192.168.17。%更改为%,则任何IP都可以用作其从属数据库来访问主服务器

#退出mysql

mysql \ gt;出口;

systemctl重新启动mysqld.service

#输入mysql数据库

[root @ localhost mysql]#mysql-uroot-p

输入密码:

#查看主服务器状态

mysql \ gt;显示主人身份;

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

|文件?????? |职位| Binlog_Do_DB | Binlo g_Ignore_DB | Executed_Gtid_Set |

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

| master-bin.000001 | 154 |后端 | | |

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

设置1行(0.00秒)

[root @ localhost mysql]#vim/etc/my.cnf

#在[mysqld]中添加:

server-id = 2

relay-log = slave-relay-bin

relay-log-index = slave-relay-bin.index

#复制-do-db =测试

#注释:

#server-id唯一的服务器ID。如果有多个从服务器,则每个服务器的服务器ID不能重复。像IP一样,它是唯一的ID。如果您未设置server-id或将其设置为0,则从服务器将不会连接到主服务器。

#relay-log启动MySQL二进制日志,该日志可用于数据备份和崩溃恢复,或者主服务器挂起。将此从属服务器用作其他从属服务器的主服务器。

#plicate-do-db指定同步的数据库。如果要复制多个数据库,请重复设置此选项。如果未在主端指定binlog-do-db,则可以在从属端使用Replication-do-db进行过滤。

#plicate-ignore-db无需同步数据库,如果有多个数据库,则可以重复设置此选项。

#应注意,replicate-do-db和replicate-ignore-db是互斥的选项,通常只需要一个。

systemctl restart mysqld.service

#输入mysql数据库

[root @ localhost mysql]#mysql-uroot-p

输入密码:

#Connect主主服务器

mysql \ gt;将master更改为master_host =” 192.168.17.130″,master_port = 3306,master_user =” masterbackup”,master_password =” 123456″,master_log_file =” master-bin.000001″,master_log_pos = 154;

#备注:

#master_host对应于主服务器的IP地址。

#master_port对应于主服务器的端口。

#master_log_file对应于显示主状态master-bin.000001显示的”文件”列。

#master_log_pos对应于显示主状态显示为154的”位置”列。

#开始从属数据同步

mysql \ gt;启动奴隶;

#停止从属数据同步(如有必要))

mysql \ gt;停止奴隶;

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

Slave_IO_Running和Slave_SQL_Running均为yes,表示同步成功。

(1)登录到主服务器上的mysql,然后输入后端数据库,创建测试表,并插入一条数据

提示:最好使用数据库管理工具(如nacicat)进行操作。

如果在主从同步过程中,其中一个句子未能报告且错误报告,则以下句子肯定不会成功同步。例如,主库具有一条数据,而从库则没有此数据。但是,如果删除主库中的数据,则没有此类数据就无法删除从库。此时,来自数据库的数据同步失败,因此后续的同步语句无法继续。

#在从属数据库上的操作

mysql \ gt;停止奴隶;

mysql \ gt;将master更改为master_host =” 192.168.17.130″,master_port = 3306,master_user =” masterbackup”,master_password =” 123456″,master_log_file =” master-bin.000001″,master_log_pos = 2050;

mysql \ gt;启动奴隶;

#备注

#master_log_file和master_log_pos可能不同,您需要在master数据库中显示master状态才能查看

此时,master-mysql数据库的slave同步完成,至于读写分离,我们可以通过Program实现,这里是实现思想的简要说明。

我们可以在主服务器上创建一个数据库用户(出于安全性考虑,根据需要给予相应的权限),主要用于写操作,在程序中通过该用户连接到主数据库仅用于写操作操作而不是阅读。

在从属服务器上创建数据库用户(出于安全性考虑,仅授予读取选择权限)主要用于读取操作,在此程序中,您可以通过该用户连接到从属数据库。

当然,您还可以找到一个组件来完成MYSQL的代理并实现SQL语句的路由,因此我们无需关注写入哪个数据库和读取哪个数据库。该程序。

未经允许不得转载:数据库同步软件|Mysql数据同步软件|sqlserver数据库同步工具|异构同步 » mysql主从同步 实现读写分离 自己记录

分享到:更多 ()

syncnavigator 8.6.2 企业版

联系我们联系我们