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

MySQL主从复制与读写分离实践

购买事宜请联系QQ:1793040

MySQL主从复制(Master-Slave)和读写分离(MySQL-代理)实践

目录:

  • 简介
  • MySQL的安装和配置
  • MySQL主从复制
  • MySQL读写分离

    • 编译并安装lua
    • 安装和配置MySQL代理
  • 启动参数的详细信息:

简介:

Mysql 作为世界上使用最广泛的免费数据库,我相信所有从事系统操作和维护的工程师都必须联系。但是在实际的生产环境中,单个单元 Mysql 数据库完全无法满足实际需求,无论是在安全性,高可用性和高并发性还是其他方面。

因此,一般来讲,它是通过 主从复制( 主从)以同步数据,然后通过读写分离( MySQL-Proxy ),以提高数据库的并发负载容量以进行部署和实现。

如下所示:

这是我在实际工作过程中编写的注释,请在此处共享以供参考。

I.安装MySQL 和配置
对于特定的安装过程,建议参考我的文章:https://www。 cnblogs.com/zhangan/p/10899843.html

其次, MySQL Master和从属复制
场景描述:
主数据库服务器: 192.168.10.130 MySQL 已安装,没有应用程序数据。
从数据库服务器: 192.168.10.131 MySQL 已安装,没有应用程序数据。

2.1 在主服务器上的操作
开始 mysql 服务
/opt/mysql/init.d/mysql start

通过命令行登录管理 MySQL 服务器
/opt/mysql/bin/mysql-uroot-p” new-password”

授权给辅助数据库服务器 192.168.10.131
mysql \ gt;授予复制从属*。 *到” rep1″ @” 192.168.10.131″,由”密码”标识;

查询主数据库的状态
Mysql \ gt;显示主人身份;
+——————-+———-+————–+——————+
|档案|职位| Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000005 | 261 | | |
+——————+———-+————–+——————+

记录文件 Position 的值,稍后将在执行从属服务器操作时使用。

2.2 配置辅助服务器
修改从属服务器的配置文件/opt/mysql/etc/my.cnf
server-id = 1 编辑为 server-id = 10 ,并确保此 ID 其他人不使用 MySQL 服务。

开始 mysql 服务
/opt/mysql/init.d/mysql start

通过命令行登录管理 MySQL 服务器
/opt/mysql/bin/mysql-uroot-p” new-password”

执行同步 SQL 声明
mysql>将主服务器更改为
master_host =” 192.168.10.130″,
master_user =” rep1″,
master_password =”密码”,
master_log_file =” mysql-bin.000005″,
master_log_pos = 261;

正确执行后开始从属同步过程
mysql \ gt;启动奴隶;

主从同步检查
mysql \ gt;显示从属状态\\\\ G
==== ==================================== ======
**** ************ 1.行*******************
Slave_IO_State:
Master_Host:192.168.10.130
Master_User:rep1
Master_Port:3306
Connect_Retry:60
Master_Log_File:mysql-bin.000005
Read_Master_Log_Pos :415
Relay_Log_File:localhost-relay-bin。 000008
Relay_Log_Pos:561
Relay_Master_Log_File:mysql-bin.000005
Slave_IO_Running:是
Slave_SQL_Running:是
Replicate_Do_DB:
…………一些省略的 ……….
Master_Server_Id:1
设置1行(0.01秒)
=================== =========================

哪个 Slave_IO_Running Slave_SQL_Running 值必须为 ,表示状态正常。

如果主服务器上已经存在应用程序数据,则在执行主从复制时需要执行以下处理:
(1)主数据库锁定表并防止再次写入数据
mysql \ gt;带读取锁的平桌子;

(2)查看主数据库的状态
mysql \ gt;显示主人身份;

(3)记录 FILE 位置 价值。
主服务器数据文件(整个/opt/mysql/data 目录)复制到从属服务器,建议通过 tar 压缩存档后,将其传输到辅助服务器进行解压缩。

(4)解锁主数据库
mysql \ gt;解锁表;

2.3 验证主从复制效果

在主服务器上的操作
在主服务器上创建数据库 first_db
mysql \ gt;创建数据库first_db;
查询确定,受影响的1行(0.01秒)

在主服务器上创建表 first_tb
mysql \ gt;创建表first_tb(id int(3),名称char(10));
查询确定,受影响的1行(0.00秒)

主服务器上的表 first_tb 中插入记录
mysql \ gt;插入first_tb值(001,” myself”);
查询确定,受影响的1行(0.00秒)

在从属服务器上查看
mysql \ gt;显示数据库;
============================
+——————-+
|数据库|
+——————–+
| information_schema |
| first_db |
| mysql |
| performance_schema |
|测试
+——————–+
设置5行(0.01秒)
======== =====================
数据库 first_db 自动生成

mysql \ gt;使用first_db
数据库阻塞

mysql \ gt;显示表格;
============================
+——————–+
| Tables_in_first_db |
+——————–+
| first_tb |
+——————–+
设置1行(0.02秒)
======== =====================
数据库表 first_tb 也已自动创建

mysql \ gt;从first_tb选择*;
============================
+——+——+
| id |名称|
+——+——+
| 1 |我自己
+——+——+
设置1行(0.00秒)
=============== ==============
记录也存在

由此,整个 MySQL Master-从属复制此过程完成,接下来,我们继续 MySQL 阅读并编写单独的安装和配置。

三。 MySQL 读写分离
场景描述:
数据库主服务器 Master Server : 192.168.10.130
数据库从属从属服务器: 192.168.10.131
MySQL-Proxy 计划服务器: 192.168.10.132

以下操作全部在 192.168.10.132 MySQL-Proxy 调度服务器。

3.2 检查系统所需的软件包
通过 rpm-qa |检查是否已安装以下软件包。 grep名称
gcc * gcc-c ++ * autoconf * automake * zlib * libxml * ncurses-devel * libmcrypt * libtool * flex * pkgconfig *? libevent * glib *

如果缺少相关的软件包,则可以使用 yum-y install 方式进行在线安装,或直接从系统安装CD中找到并通过 rpm-ivh 安装方式。

3.3 编译并安装 lua
MySQL-Proxy 读写分离主要是通过 rw-splitting.lua 该脚本已实现,因此需要安装 lua

在这里,我们建议使用源代码包进行安装
cd/opt/install
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zvfx lua-5.1.4.tar.gz
cd lua-5.1.4

vi src/Makefile
CFLAGS =-O2-Wall $(MYCFLAGS)添加此行记录 -fPIC ,更改为 CFLAGS =-O2-Wall-fPIC $(MYCFLAGS) 以避免在编译过程中出错。

make linux
make install

cp etc/lua.pc/usr/lib/pkgconfig/
导出PKG_CONFIG_PATH = $ PKG_CONFIG_PATH:/usr/lib/pkgconfig

3.4 安装和配置 MySQL-Proxy
MySQL-Proxy 可通过以下URL获得:
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/

建议使用已编译的二进制版本,因为在使用源包进行编译时,会使用最新版本的MySQL-代理 automake glib and libevent 的版本具有很高的要求,这些软件包是系统建议强制更新。

2.1下载MySQL代理

http://dev.mysql.com/downloads/mysql-proxy/

2.2解压缩并剪切到/usr/local

#?柏油? XF? mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz

#? MV? mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit?/usr/local/mysql-proxy?

#? useradd?-r? mysql代理

#chown?-R? root.mysql代理? mysql代理/

2.3将bin目录添加到$ PATH

#? vi?/etc/profile.d/mysql-proxy.sh

导出? PATH = $ PATH:/usr/local/mysql-proxy/bin

#?。?/etc/profile.d/mysql-proxy.sh

2.4启动MySQL-Proxy并检查日志

mysql代理?

-守护进程?

-log-level =调试?

-log-file =/var/log/mysql-proxy.log?

-plugins =”代理”

-proxy-backend-addresses =” 192.168.1.112:3306″

-proxy-read-only-backend-addresses =” 192.168.1.113:3306″

-proxy-lua-script =”/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua”

-plugins =” admin”?

-admin-username =” admin”?

-admin-password =” admin”?

-admin-lua-script =”/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua”

#? vi?/etc/sysconfig/mysql-proxy

/bin/ bash

#选项 for mysql-代理

ADMIN_USER = " admin "

ADMIN_PASSWORD = " admin "

ADMIN_ADDRESS = ""

ADMIN_LUA_SCRIPT = " /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua "

PROXY_ADDRESS = " 0.0.0.0:3306"

PROXY_USER = " mysql-proxy "

PROXY_OPTIONS = " -daemon--log-level = info--log-file =/var/log/mysql-proxy.log--plugins =代理--plugins = admin--proxy-backend-addresses = 192.168.1.112:3306--proxy-read-only-backend-addresses = 192.168.1.113:3306--proxy-lua-script =/usr/local/mysql-proxy/share/doc/mysql/proxy/rw-splitting.lua "

详细的启动参数:
=========================== ==================
PROXY_PATH =/opt/mysql-proxy/bin//定义mysql-proxy服务二进制文件路径

PROXY_OPTIONS =”-admin-username =根\\\\//定义内部管理服务器帐户
–admin-password =密码\\\\//定义内部管理服务器密码
–proxy-read-only-backend-addresses = 192.168.10.131:3306 \\\\//定义后端只读从属服务器地址
–proxy-backend-addresses = 192.168.10.130:3306 \\\\//定义后端主服务器地址
–admin-lua-script =/opt/mysql-proxy/lib/mysql-proxy/lua/admin.lua \\\\//定义lua管理脚本路径
–proxy-lua-script =/opt/mysql-proxy/scripts/rw-splitting.lua” \\\\//定义lua读写分离脚本路径

PROXY_PID =/opt/mysql-proxy/run/mysql-proxy.pid//定义mysql-proxy PID文件路径

$ NICELEVEL $ PROXY_PATH/mysql-proxy $ PROXY_OPTIONS \\\\
–daemon \\\\//定义以守护程序模式启动
–keepalive \\\\//使进程异常关闭,之后可以自动恢复
–pid-file = $ PROXY_PID \\\\//定义mysql-proxy PID文件路径
–user = mysql \\\\//以如下方式启动服务一个mysql用户
-log-level =警告\\\\//定义日志级别,从高到低(错误|警告|信息|消息|调试)
–log-file =/opt/mysql-proxy/log/mysql-proxy.log//定义日志文件路径
============================ ======= ==========

未经允许不得转载:数据库同步软件|Mysql数据同步软件|sqlserver数据库同步工具|异构同步 » MySQL主从复制与读写分离实践

分享到:更多 ()

syncnavigator 8.6.2 企业版

联系我们联系我们