mysql主从复制(master-slave)与读写分离(mysql-proxy)实践_master 192.168.139.131:3306 from which slave 192.1-csdn博客


本站和网页 https://blog.csdn.net/lxf2323881/article/details/79110012 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践_master 192.168.139.131:3306 from which slave 192.1-CSDN博客
MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
最新推荐文章于 2023-05-17 09:31:26 发布
给我一杯拿铁 阅读量253 收藏 点赞数 分类专栏: mysql 专栏收录该内容 13 篇文章 0 订阅 订阅专栏
Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。
因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。
如下图所示:
下面是我在实际工作过程中所整理的笔记,在此分享出来,以供大家参考。
一、MySQL的安装与配置
具体的安装过程,建议参考我的这一篇文章:
http://heylinux.com/archives/993.html
值得一提的是,我的安装过程都是源码包编译安装的,并且所有的配置与数据等都统一规划到了/opt/mysql目录中,因此在一台服务器上安装完成以后,可以将整个mysql目录打包,然后传到其它服务器上解包,便可立即使用。
二、MySQL主从复制
场景描述:
主数据库服务器: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> GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.10.131' identified by ‘password’;
查询主数据库状态
Mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
| mysql-bin.000005 | 261 | | |
记录下 FILE 及 Position 的值,在后面进行从服务器操作的时候需要用到。
2.2 配置从服务器
修改从服务器的配置文件/opt/mysql/etc/my.cnf
将 server-id = 1修改为 server-id = 10,并确保这个ID没有被别的MySQL服务所使用。
执行同步SQL语句
mysql> change master to
master_host=’192.168.10.130’,
master_user=’rep1’,
master_password=’password’,
master_log_file=’mysql-bin.000005’,
master_log_pos=261;
正确执行后启动Slave同步进程
mysql> start slave;
主从同步检查
mysql> show slave status\G
==============================================
**************** 1. row *******************
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: YES
Slave_SQL_Running: YES
Replicate_Do_DB:
……………省略若干……………
Master_Server_Id: 1
1 row in set (0.01 sec)
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。
如果主服务器已经存在应用数据,则在进行主从复制时,需要做以下处理:
(1)主数据库进行锁表操作,不让数据再进行写入动作
mysql> FLUSH TABLES WITH READ LOCK;
(2)查看主数据库状态
mysql> show master status;
(3)复制数据文件
将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,建议通过tar归档压缩后再传到从服务器解压。
(4)取消主数据库锁定
mysql> UNLOCK TABLES;
2.3 验证主从复制效果
主服务器上的操作
在主服务器上创建数据库first_db
mysql> create database first_db;
Query Ok, 1 row affected (0.01 sec)
在主服务器上创建表first_tb
mysql> create table first_tb(id int(3),name char(10));
Query Ok, 1 row affected (0.00 sec)
在主服务器上的表first_tb中插入记录
mysql> insert into first_tb values (001,’myself’);
在从服务器上查看
mysql> show databases;
=============================
+--------------------+
| Database |
| information_schema |
| first_db |
| mysql |
| performance_schema |
| test |
5 rows in set (0.01 sec)
数据库first_db已经自动生成
mysql> use first_db
Database chaged
mysql> show tables;
| Tables_in_first_db |
| first_tb |
1 row in set (0.02 sec)
数据库表first_tb也已经自动创建
mysql> select * from first_tb;
+------+------+
| id | name |
| 1 | myself |
1 rows in set (0.00 sec)
记录也已经存在
由此,整个MySQL主从复制的过程就完成了,接下来,我们进行MySQL读写分离的安装与配置。
三、MySQL读写分离
数据库Master主服务器:192.168.10.130
数据库Slave从服务器:192.168.10.131
MySQL-Proxy调度服务器:192.168.10.132
以下操作,均是在192.168.10.132即MySQL-Proxy调度服务器 上进行的。
3.1 MySQL的安装与配置
具体的安装过程与上文相同。
3.2 检查系统所需软件包
通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。
gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*
libevent* glib*
若缺少相关的软件包,可通过yum -y install方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh方式安装。
3.3 编译安装lua
MySQL-Proxy的读写分离主要是通过rw-splitting.lua脚本实现的,因此需要安装lua。
lua可通过以下方式获得
从http://www.lua.org/download.html下载源码包
从rpm.pbone.net搜索相关的rpm包
download.fedora.redhat.com/pub/fedora/epel/5/i386/lua-5.1.4-4.el5.i386.rpm
download.fedora.redhat.com/pub/fedora/epel/5/x86_64/lua-5.1.4-4.el5.x86_64.rpm
这里我们建议采用源码包进行安装
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/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig
3.4 安装配置MySQL-Proxy
MySQL-Proxy可通过以下网址获得:
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/
推荐采用已经编译好的二进制版本,因为采用源码包进行编译时,最新版的MySQL-Proxy对automake,glib以及libevent的版本都有很高的要求,而这些软件包都是系统的基础套件,不建议强行进行更新。
并且这些已经编译好的二进制版本在解压后都在统一的目录内,因此建议选择以下版本:
32位RHEL5平台:
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz
64位RHEL5平台:
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.1-linux-rhel5-x86-64bit.tar.gz
测试平台为RHEL5 32位,因此选择32位的软件包
wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz
tar xzvf mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz
mv mysql-proxy-0.8.1-linux-rhel5-x86-32bit /opt/mysql-proxy
创建mysql-proxy服务管理脚本
mkdir /opt/mysql-proxy/init.d/
vim mysql-proxy
#!/bin/sh
# mysql-proxy This script starts and stops the mysql-proxy daemon
# chkconfig: - 78 30
# processname: mysql-proxy
# description: mysql-proxy is a proxy daemon to mysql
# Source function library.
. /etc/rc.d/init.d/functions
#PROXY_PATH=/usr/local/bin
PROXY_PATH=/opt/mysql-proxy/bin
prog="mysql-proxy"
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Set default mysql-proxy configuration.
#PROXY_OPTIONS="--daemon"
PROXY_OPTIONS="--admin-username=root --admin-password=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 --proxy-lua-script=/opt/mysql-proxy/scripts/rw-splitting.lua"
PROXY_PID=/opt/mysql-proxy/run/mysql-proxy.pid
# Source mysql-proxy configuration.
if [ -f /etc/sysconfig/mysql-proxy ]; then
. /etc/sysconfig/mysql-proxy
fi
PATH=$PATH:/usr/bin:/usr/local/bin:$PROXY_PATH
# By default it's all good
RETVAL=0
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n $"Starting $prog: "
$NICELEVEL $PROXY_PATH/mysql-proxy $PROXY_OPTIONS --daemon --pid-file=$PROXY_PID --user=mysql --log-level=warning --log-file=/opt/mysql-proxy/log/mysql-proxy.log
RETVAL=$?
echo
if [ $RETVAL = 0 ]; then
touch /var/lock/subsys/mysql-proxy
;;
stop)
# Stop daemons.
echo -n $"Stopping $prog: "
killproc $prog
rm -f /var/lock/subsys/mysql-proxy
rm -f $PROXY_PID
restart)
$0 stop
sleep 3
$0 start
condrestart)
[ -e /var/lock/subsys/mysql-proxy ] && $0 restart
status)
status mysql-proxy
*)
echo "Usage: $0 {start|stop|restart|status|condrestart}"
RETVAL=1
esac
exit $RETVAL
脚本参数详解:
PROXY_PATH=/opt/mysql-proxy/bin //定义mysql-proxy服务二进制文件路径
PROXY_OPTIONS="--admin-username=root \ //定义内部管理服务器账号
--admin-password=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=warning \ //定义log日志级别,由高到低分别有(error|warning|info|message|debug)
--log-file=/opt/mysql-proxy/log/mysql-proxy.log //定义log日志文件路径
cp mysql-proxy /opt/mysql-proxy/init.d/
chmod +x /opt/mysql-proxy/init.d/mysql-proxy
mkdir /opt/mysql-proxy/run
mkdir /opt/mysql-proxy/log
mkdir /opt/mysql-proxy/scripts
配置并使用rw-splitting.lua读写分离脚本
最新的脚本我们可以从最新的mysql-proxy源码包中获取
wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.1.tar.gz
tar xzvf mysql-proxy-0.8.1.tar.gz
cd mysql-proxy-0.8.1
cp lib/rw-splitting.lua /opt/mysql-proxy/scripts
修改读写分离脚本rw-splitting.lua
修改默认连接,进行快速测试,不修改的话要达到连接数为4时才启用读写分离
vim /opt/mysql-proxy/scripts/rw-splitting.lua
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, //默认为4
max_idle_connections = 1, //默认为8
is_debug = false
end
修改完成后,启动mysql-proxy
/opt/mysql-proxy/init.d/mysql-proxy start
3.5 测试读写分离效果
创建用于读写分离的数据库连接用户
登陆主数据库服务器192.168.10.130,通过命令行登录管理MySQL服务器
mysql> GRANT ALL ON *.* TO 'proxy1'@'192.168.10.132' IDENTIFIED BY 'password';
由于我们配置了主从复制功能,因此从数据库服务器192.168.10.131上已经同步了此操作。
为了清晰的看到读写分离的效果,需要暂时关闭MySQL主从复制功能
登陆从数据库服务器192.168.10.131,通过命令行登录管理MySQL服务器
关闭Slave同步进程
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
连接MySQL-Proxy
/opt/mysql/bin/mysql -uproxy1 -p'password' -P4040 -h192.168.10.132
登陆成功后,在first_db数据的first_tb表中插入两条记录
mysql> use first_db;
Database changed
mysql> insert into first_tb values (007,’first’);
mysql> insert into first_tb values (110,’second’);
查询记录
通过读操作并没有看到新记录
mysql> quit
退出MySQL-Proxy
下面,分别登陆到主从数据库服务器,对比记录信息
首先,检查主数据库服务器
| 007 | first |
| 110 | second |
3 rows in set (0.00 sec)
两条新记录都已经存在
然后,检查从数据库服务器
没有新记录存在
由此验证,我们已经实现了MySQL读写分离,目前所有的写操作都全部在Master主服务器上,用来避免数据的不同步;
另外,所有的读操作都分摊给了其它各个Slave从服务器上,用来分担数据库压力。
经验分享:
1.当MySQL主从复制在 show slave status\G 时出现Slave_IO_Running或Slave_SQL_Running 的值不为YES时,需要首先通过 stop slave 来停止从服务器,然后再执行一次本文 2.1与2.2 章节中的步骤即可恢复,但如果想尽可能的同步更多的数据,可以在Slave上将master_log_pos节点的值在之前同步失效的值的基础上增大一些,然后反复测试,直到同步OK。因为MySQL主从复制的原理其实就是从服务器读取主服务器的binlog,然后根据binlog的记录来更新数据库。
2.MySQL-Proxy的rw-splitting.lua脚本在网上有很多版本,但是最准确无误的版本仍然是源码包中所附带的lib/rw-splitting.lua脚本,如果有lua脚本编程基础的话,可以在这个脚本的基础上再进行优化;
3.MySQL-Proxy实际上非常不稳定,在高并发或有错误连接的情况下,进程很容易自动关闭,因此打开--keepalive参数让进程自动恢复是个比较好的办法,但还是不能从根本上解决问题,因此通常最稳妥的做法是在每个从服务器上安装一个MySQL-Proxy供自身使用,虽然比较低效但却能保证稳定性;
4.一主多从的架构并不是最好的架构,通常比较优的做法是通过程序代码和中间件等方面,来规划,比如设置对表数据的自增id值差异增长等方式来实现两个或多个主服务器,但一定要注意保证好这些主服务器数据的完整性,否则效果会比多个一主多从的架构还要差;
5.MySQL-Cluster 的稳定性也不是太好;
6.Amoeba for MySQL 是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能,并且稳定性要大大超过MySQL-Proxy,建议大家用来替代MySQL-Proxy,甚至MySQL-Cluster。
优惠劵
关注
点赞
觉得还不错?
一键收藏
知道了
评论
Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。
复制链接
扫一扫
专栏目录
Mysql
主从复制
master-slave
)实际操作案例
09-10
主要介绍了
)实际操作案例,同时介绍了
grant 用户授权的相关内容,需要的朋友可以参考下
部署
读写分离
wyl9527的博客
09-05
1177
1、
原理:
   
就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。
安装环境:
linux环境
centos7.3
192.168
.2.201
master
主数据库
.2.202
slave
从数据库
.2.203
my...
参与评论
您还未登录,请先
登录
后发表或查看评论
主从表与
originsoft的博客
04-01
619
MySQL
Master-Slave
)与
MySQL-Proxy
实践
作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台
作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。
因此,一般来说都是通过
)的方式来同步数据,再通过读写分...
操作部署【图文详解】
weixin_55609823的博客
07-01
985
一、
的概述1、什么是
?2、为什么要
呢?3、什么时候要
?二、mysq支持的复制类型三、
的工作过程三、
延迟四、
优化五、
原理六、常见的
分类1、基于程序代码内部实现2、基于中间代理层实现五、搭建
主从服务器时间同步(1)主服务器设置(2)从服务器设置2、主服务器的
配置3、从服务器的
配置4、进行主从测试六、搭建
1、Amoe
(详细部署案例)
热门推荐
征服Bug的博客
09-04
2万+
在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用
,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。做数据的热备架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
配置与部署
2301_77388035的博客
05-17
125
1环境准备 准备三台centOS7 的虚拟机 有
服务
关闭防火墙 开启宽限模式
关闭seLinux。9去配置文件 /usr/local/amoeba/conf/amoeba.xml。主、从服务去/etc/my.cnf 进行配置。6java命令优化 先用which 找到位置。5进入 /erc/profile 进行配置。8解压 tar xf amoeba。3
创建一个授权用户。去主服务器查看一下数值。
基于
数据库复制
架构的分析
本篇文章是对
架构进行了详细的分析介绍,需要的朋友参考下
joeywang310#
集群搭建-基于DockerCompose1
07-25
如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
容器配置配置Dockerfile设置server_id,一般设置为
scrapy:基于python,scrapy,redis实现主从式
爬虫
05-18
scrapy基于python,scrapy,redis实现主从式
的四种方案
一树一菩提的博客
05-10
以上四种方案各有优缺点,基于
proxy代理的方式对于应用来说相对简单,但是在项目稳定性、事务支持性等方面还存在问题;而基于应用内路由的方式固然灵活度比较高,但是也增加了应用逻辑的复杂度;基于
-connector-java的jdbc驱动和sharding-jdbc的方式在使用上相对简单,但限制了需要使用java开发。
配置说明
04-27
第一招、
服务的启动和停止
net stop
net start
第二招、登陆
语法如下:
-u用户名 -p用户密码
键入命令
-uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到
中了,
的提示符是:
>
注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP
第三招、增加新用户
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入
,然后键入以下命令:
grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";
如果希望该用户能够在任何机器上登陆
,则将localhost改为"%"。
如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by "";
第四招: 操作数据库
登录到
中,然后在
的提示符下运行下列命令,每个命令以分号结束。
1、 显示数据库列表。
show databases;
缺省有两个数据库:
和test。
库存放着
的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。
weixin_47403060的博客
10-26
459
一、前言
使用
的原因:
1、在企业应用中,成熟的业务通常数据量都比较大
2、单台
在安全性、高可用性和高并发方面都无法满足实际的需求
(myisam基于表级锁定;innodb基于行级锁定 --存储引擎不能满足并发读、写的需求)
3、配置多台主从数据库服务器以实现
原理
的复制类型
基于语句的复制
基于行的复制
混合类型的复制(语句、行、日志文件)
2、
的工作过程
二、
1、只在主服务器上
/配置步骤
qq_69613156的博客
10-05
769
amoeba
/负载均衡。数据库安全及可用性实现。完整且精简的配置步骤。
MySql
集群(1)-
市民景先生
03-23
852
简单概括:创建多个数据库,每个数据库只做单一功能,分别“读”操作或者“写“操作,并且通过日志进行同步数据操作。详细原理:1.主库负责处理事务的增删改操作,从库负责查询操作。能够有效避免数据更新的行锁,使得整个系统的查询得到极大的改善。2.
是根据SQL语义的分析,将读操作和写操作分别路由至主库与从库。3.通过一主多仆的配置配置方式,将查询请求均匀的分散到数据副本,能够近一步提升系统的处理能力。4.使用多主多仆的方式,更能提高吞吐量和。
5.5 双机_
5.5双机热备份
weixin_39985472的博客
01-27
39
五,创建授权用户
A:
>grant replication
on *.* to rpuser1@
.1.29 identified by ‘123456’;
> flush privileges;
B:
on *.* to rpuser2@
.1.2...
CUI_LE的博客
3883
实现方式:
1)配置多数据源;
2)使用
的proxy中间件代理工具;
第一种方式中,数据库和Application是有一定侵入性的,即我们的数据库更换时,application中的配置文件是需要手动修改的。而第二种方式中,我们可选择
proxy固定连接一个数据库,即使数据库地址更换也无需更换项目中的数据库连接配置。
同样,在开始配置实现
之前,我们会遇到一个选型问题,那就是在诸多的
的proxy中间件工具中,如
mysql-proxy
、atlas、cobar
数据库:
张维鹏的博客
12-26
1万+
解决的是,数据库的写操作,影响了查询的效率,所以
适用于读远大于写的场景。
的实现基础是
,主数据库利用
将自身数据的改变同步到从数据库集群中,然后主数据库负责处理写操作(当然也可以执行读操作),从数据库负责处理读操作,不能执行写操作。并可以根据压力情况,部署多个从数据库提高读操作的速度,减少主数据库的压力,提高系统总体的性能。
MYSQL
(多台数据库部署)手把手教学
奔跑的菜鸟的Run博客
02-14
585
数据库主从分离,缓解数据库压力实现数据库
。克隆虚拟机的修改UUID问题补充,保姆级手把手教学
就是一台或多台
数据库(
,即从库)从另一台
,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。
数据库自带功能,无需借助第三方工具。
将改变记录到二进制日志(binary log)
的binary log拷贝到它的中继日志(relay log)
5.7主从架构(
)部署
weixin_37761111的博客
08-02
436
5.7主从部署
一、准备工作
从官网下载
的tar包,链接如下:https://dev.
.com/downloads/
/5.7.html#downloads
我的环境是CentOS7,将tar包解压放在/usr/local/ 下,如图:
到目录里面创建两个文件夹 arch tmp
创建
admin用户来操作
,步骤如下:
这里会有个问...
搭建
最新发布
09-15
对于搭建
的步骤如下:
1. 配置主服务器:
- 在主服务器的配置文件中开启二进制日志(binlog),可以通过在my.cnf文件中添加如下配置进行开启:
```
log-bin=
-bin
server-id=1
- 重启
服务。
2. 配置从服务器:
- 在从服务器的配置文件中添加如下配置:
server-id=2
relay-log=
-relay-bin
read-only=1
3. 创建复制用户:
- 在主服务器上创建一个用于复制的用户,并赋予适当的权限:
CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION
SLAVE
ON *.* TO 'replication'@'%';
FLUSH PRIVILEGES;
- 注意修改密码为实际使用的密码。
4. 备份主服务器数据并导入到从服务器:
- 在主服务器上执行以下命令备份数据:
dump -u root -p --all-databases --
-data > dump.sql
- 将备份文件导入到从服务器:
-u root -p < dump.sql
5. 配置
- 在从服务器上执行以下命令,指定主服务器的地址、复制用户和密码,并开始复制:
CHANGE
MASTER
TO
_HOST='主服务器IP',
_USER='replication',
_PASSWORD='password',
_LOG_FILE='
-bin.XXXXXX',
_LOG_POS=XXX;
START
- 注意替换主服务器IP、复制用户和密码,以及
_LOG_FILE和
_LOG_POS参数。
6. 配置
- 在从服务器上创建一个用于读取数据的用户,并赋予适当的权限:
CREATE USER 'reader'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON *.* TO 'reader'@'%';
- 在应用程序中配置
,将读请求发往从服务器,写请求发往主服务器。
完成上述步骤后,你将成功搭建
。请记住,以上步骤仅供参考,具体操作可能因环境和需求而有所不同。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CSDN认证博客专家
CSDN认证企业博客
码龄7年
暂无认证
13
原创
25万+
周排名
130万+
总排名
18万+
访问
等级
1371
积分
42
粉丝
56
获赞
14
214
私信
热门文章
Api接口加密策略
42590
十分钟学会memcache,比你想象的要简单
41518
PHP RSA公约私钥加密解密示例
20704
史上最好用的免费SVN空间
6341
php的api接口
5120
分类专栏
llinux
1篇
13篇
git
4篇
laravel
2篇
sphinx
Nosql
memcache
redis
yii2.0
最新评论
yumozhan:
入参有必要做加密吗?
??boy?:
memcache可以设置密码吗,求教
发福的福星:
看文字不比视频快吗,没看过视频,但是文字看起来很舒服
Sun_nong:
有用好文!希望博主以后多多分享哈!
weixin_52953788:
https://wsfdb.cn
正在使用中,界面不太友好,稳定性以及其他的都还行
最新文章
YII2 advanced 高级版本项目搭建-添加API应用以及多应用(一)
Redis持久化-数据丢失及解决
mysql大数据分库和分表 php解决方案
2018年
37篇
2017年
26篇
目录
被折叠的 
 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
红包个数最小为10个
红包总金额
红包金额最低5元
余额支付
当前余额
3.43
前往充值 >
需支付:
10.00
取消
确定
下一步
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值