MySQL 主从同步与分离

说明:
在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载 能力这样的方案来进行部署与实施。
MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。

.
.
模拟搭建使用的服务器拓扑图如下

.
.
实验环境如下:

服务器安装MySQL5.5版本
.
.
实验包下载地址:
链接: https://pan.baidu.com/s/16n0zJBGeB3iGyRvXzxL5xA 密码: tcsn
.
.
实验步骤如下:
.
.
1 . 在主服务器上
先关闭防火墙,并检查是否安装了ntp,这里是默认安装好的
systemctl stop firewalld.service
setenforce 0 #关闭防火墙
rpm -q ntp #检查是否安装ntp

.
.
2 . 进入配置文件进行配置
vim /etc/ntp.conf
server 127.127.200.0 #本地是时钟源
fudge 127.127.200.0 stratum 8 #设置时间层级为8


systemctl start ntpd #开启时钟源

.
.
3 .接下来在从服务器1和从服务2做相同的操作
systemctl stop firewalld.service
setenforce 0 #关闭防火墙
systemctl start ntpd #开启时钟源
/usr/sbin/ntpdate 192.168.200.133 #向master同步时间


.
.
4 .回到主服务器
vim /etc/my.cnf #进行配置文件
server-id = 11 #服务器编号
......
log-bin=master-bin #更改日志名称,方便区别
log-slave-updates=true #允许从服务器日志文件同步主服务器日志文件



.
.
5 .进入数据库
GRANT REPLICATION SLAVE ON . TO ‘myslave‘@‘192.168.200.%‘ IDENTIFIED BY ‘123123‘; #给予权限
FLUSH PRIVILEGES; #刷新,即时生效
show master status; #查看日志文件名


.
.
6 .回到从服务器,两台从服务器做相同操作
vim /etc/my.cnf #进行配置文件
server-id = 22 #更改端口号。注意,从服务器2的端口号不能与主、从服务器1相同
relay-log=relay-log-bin #指定从服务器日志文件
relay-log-index=slave-relay-bin.index #指定文件名与位置,
systemctl restart mysqld.service #重启数据库



.
.
7 . 进入数据库
change master to master_host=‘192.168.200.133‘,master_user=‘myslave‘,master_password=‘123123‘,master_log_file=‘master-bin.000001‘,master_log_pos=339; #给凭证
start slave; #开启从服务器身份
show slave status \G; #查看同步状况
Slave_IO_Running: Yes
Slave_SQL_Running: Yes #显示yes 说明已经开始同步



.
.
8 .这时候就可以在主服务器数据库中,新建一个数据库,验证是否同步



同步成功
.
.
主从同步做好后,下面进行读写分离操作
.
.
1 .进入代理服务器——amoeba,首先还是老一步操作
systemctl stop firewalld.service
setenforce 0 #关闭防火墙
mkdir /ooo #创建一个目录,挂载用
mount.cifs //192.168.200.1/gx /ooo/ #将文件挂载到目录内
cd /ooo/ #进入目录
cp jdk-6u14-linux-x64.bin /usr/local/ #拷贝到系统文件下,让系统能识别
cd /usr/local/
./jdk-6u14-linux-x64.bin #安装java环境包


.
.
2 . 将文件移动或复制到/usr/目录下
mv jdk1.6.0_14/ /usr/local/jdk1.6 #移动至系统文件下
vim /etc/profile #进入配置文件,在末尾添加如下环境变量,系统可以用安装文件中的命令与函数:
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin


source /etc/profile #刷新生效
.
.
3 . 解压文件到指定目录下
mkdir /usr/local/amoeba #创建一个文件夹
cd /ooo/
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ #将压缩文件解压到此目录文件下


.
.
4 . 给予文件相对的权限
chmod -R 755 /usr/local/amoeba/
/usr/local/amoeba/bin/amoeba
amoeba start|stop #代表安装成功


.
.
5 . 在三台MySQL上添加权限开放给amoeba访问
grant all on . to ‘test‘@‘192.168.201.%‘ identified by ‘123123‘;#amoeba使用test帐户访问三台数据库


.
.

6 . 然后回到代理服务器,进行配置文件的操作
cd /usr/local/amoeba
vim conf/amoeba.xml
30行---
<property name="amoeba">root</property> #更改用户名
32行---
<property name="password">123123</property> #密码

115行--117-
<property name="defaultPool">master</property> #最大权限 给master
<property name="writePool">master</property> #写入权限 给master
<property name="readPool">slaves</property> #读取权限


.
.
7 . 进入下一个配置文件,进行配置
vim conf/dbServers.xml
--26--29---去掉注释
<property name="user">test</property> #登录身份
<property name="password">123.com</property> #登录密码

--42-47---主服务器
< dbServer name="master" parent="abstractServer"> #主服务为master
< property name="ipAddress">192.168.201.131</property> #主服务器ip地址
--50-54--从服务器1
< dbServer name="slave1" parent="abstractServer"> #从服务器1
<property name="ipAddress">192.168.201.129</property> #ip地址
复制6行做从服务2

--63---
< dbServer name="slaves" virtual="true"> #从服务器池
--70---
<property name="poolNames">slave1,slave2</property> #定义两台从服务


.
.
8 . 到此,就可以开启服务了
/usr/local/amoeba/bin/amoeba start& #开启amoeba服务


.
.
9 .进入客户端
systemctl stop firewalld.service
setenforce 0 #关闭防火墙
yum install mysql -y #安装MySQL命令


.
.
10 .mysql -u amoeba -p123123 -h 192.168.200.131 -P8066 #登录到群集数据库

.
.
此时,从服务器只能读取主服务器,客户端能读取从服务器,写入到主服务器

原文地址:http://blog.51cto.com/13756925/2175842

时间: 2024-10-16 05:28:06

MySQL 主从同步与分离的相关文章

MySQL主从同步读写分离的集群配置

大型网站为了解决大量的高并发访问问题,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器支持,如此多的数据库连接操作,服务器性能再好数据库必然会崩溃.数据丢失的话,后果更是不堪设想.这时候,我们会考虑如何减少数据库的连接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached等.如果资金充足的话,必然会想到假设服务器集群,来分担主数据库的压力.或者在硬件设备上,投入大量资金,购买高性能的服务器.出名

使用amoeba配置mysql主从同步读写分离

实验环境:需要三台手工编译安装的mysql,一台主,两台从主: 192.168.88.100从1: 192.168.88.103从2: 192.168.88.104前段服务器: 192.168.88.101 -----在主服务器192.168.88.100上做---------------配置NTP服务器---------- //在主服务器上搭ntp服务,提供时间同步 yum install -y ntp vi /etc/ntp.conf restrict 192.168.88.0 mask 2

mysql主从同步读写分离

https://pan.baidu.com/s/1tm_FQ4C8heQqzx01URr85A //软件连接百度网盘 三台mysql数据库:主数据库服务器:192.168.80.100 从数据库服务器1:192.168.80.101 从数据库服务器2:192.168.80.102 一台amoeba调度器:192.168.80.103 一台mariadb客户端: 192.168.80.104 注:五台虚拟机第一步都写以下两行 systemctl stop firewalld //关闭防火墙 set

mysql主从同步读写分离配置

#mysql主库配置添加: #缓存用户表及索引数据的最主要缓存空间,一般建议50%~80%,但应该以mysql服务器实际情况来定,如果跑着其他 #的应用服务或者有MyISAM表,则需要先减去系统+应用+MyISAM引擎需要的内存,再得出innodb_buffer_pool_size的 #实际值,具体情况具体分析. innodb_buffer_pool_size = 4096M #打开bin-log日志,以供slave机器读取同步日志. log-bin=/mnt/mysql/log/mysql-b

mysql 主从同步-读写分离

一.       实验环境 Master                   centos 7.3              192.168.138.13 Slave                     centos 7.3               192.168.138.14 二.在master操作 安装并配置文件 [[email protected] ~]# yum install mariadb-server -y [[email protected] ~]# cat /etc/m

MYSQL主从同步+读写分离

环境:CentOs 6.5(最小化安装) 关闭防火墙或添加对应规则,否则slave不能连接master,会导致同步失败 Mysql1:192.168.0.231                 Mysql2:192.168.0.232                    Mysql3:192.168.0.233 在Mysql1新建同步用户和新建一个数据库yfshare,在数据库里面新建表插入数据,以作标记: mysql> select * from mytable; +------+-----

MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

MySQL主从同步、读写分离配置步骤、问题解决笔记

根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用.       为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master)           192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i6

基于mysql主从同步的proxy读写分离

架构示意图            ___ master_mysql(10.10.10.3)        |          |    mysql-proxy(10.10.10.2)   |       |___       |            slave_mysql(10.10.10.4) (一)mysql主从同步 1.mysql-master设置 (1) server-id = 1    //master端ID号 binlog-ignore-db =    //设置不同步的sql库