数据库主从复制,读写分离(1)

mysql主从复制与读写分离

在实际生产环境中,如果对myql数据库的读和写都在一台数据库上,无论是在安全性、高可用性还是高并发性等各个方面都是不能满足实际需求的。

主从复制:一台mysql主服务器带两台mysql从服务器做了数据复制,前端应用在进行写操作时,对主服务器进行操作,在进行服务器读操作时,对两台从服务器进行操作,这样就减轻了对主服务器的压力。

搭建mysql主从复制

准备三台安装mysql数据库的服务器(同一网段)。

建立时间同步环境,在主节点上搭建时间同步服务器,并写成计划任务,保证三台主机时间点相同。

安装NTP服务

[root@localhost ~]# yum install ntp -y

[root@localhost ~]# vim /etc/ntp.conf

server 127.127.1.0
fudge 127.127.1.0 stratum 8 在配置文件中添加这两行

[root@localhost ~]# systemctl start ntpd 启动
[root@localhost ~]# systemctl enable ntpd 设置为开机启动

在总结点上进行时间同步:

[root@localhost ~]# yum install ntpdate

ntpdate 192.168.88.132 做成计划任务

先查看当前目录which ntpddate

crontab -e

*/5 * * * * /usr/sbin/ntpdate 192.168.88.132 注:时间服务器计划任务两台时间服务器都做。

在每台服务器上关闭防火墙

可以给MySQL设置密码

mysqladmin -u root password ‘pwd123’,后面mysql可以根据这个密码登录

配置主从复制

先启用二进制日志功能

打开它的主配置文件

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

server-id=11 每个主机的ID标识
log_bin=master-bin 开启二进制文件功能,一会产生的二进制文件名字为master
log-slave-update=ture 允许从端服务器进行更新

重新启动mysql

systemctl restart mysql

[root@localhost ~]# netstat -tunlp |grep mysqld 查看是否已经启动,端口号3306
tcp6 0 0 :::3306 ::? LISTEN 14421/mysqld

[root@localhost ~]# ls /usr/local/mysql/data/ 产生了二进制文件
auto.cnf ib_logfile1 master-bin.index xuexi
db_test localhost.localdomain.err mysql
ibdata1 localhost.localdomain.pid performance_schema
ib_logfile0 master-bin.000001 test

在mysql数据库中进行授权:

登录mysql mysql -u -root -p

grant replication slave on * . * to ‘myslave’@‘192.168.88.%’ identified by ‘123456’;

flush privileges;

查看一下当前的偏移量

show master status;

偏移量代表同步点

主服务器配置完成

在从端:

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

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

第二个从端同样在配置文件中添加此内容

两台从端mysql服务器重新启动:

[root@localhost ~]# systemctl restart mysqld.service

注:在克隆主机中**

[root@localhost ~]# vim /usr/local/mysql/data/auto.cnf 里面的uuid内容是相同的,主从同步会不成功。

所以在克隆主机中,里面的uuid需要改变

全部修改完配置文件后,从端进入mysql服务器

change master to master_host=‘192.168.88.132’,master_user=‘myslave’,master_password=‘123456’,master_log_file=‘master-bin.000001’,master_log_pos=411;

start slave;开启服务 stop slave;关闭服务

show slave status\G 查看两个线程是否开启

主从复制配置完成,现在在主服务器创建库,在从服务器种可以查到。OK!

搭建mysql读写分离

首先另开起一台服务器,安装amoeba用于做mysql前端代理层,负载均衡内部数据库

chmod +x jdk-6ul4-linux-x64.bin

./jdk-6ui4-linux-x64.bin 编译,根据提示按enter键即可

mv jdk1.6.0_14/ /usr/local/jdk1.6 为后面操作方便修改文件名称

[root@localhost ~]# vim /etc/profile

export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH= C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/lib: J A V A H O M E / j r e / l i b e x p o r t P A T H = JAVA_HOME/jre/lib export PATH= JAVAHOME/jre/libexportPATH=JAVA_HOME/lib: J A V A H O M E / j r e / b i n : JAVA_HOME/jre/bin: JAVAHOME/jre/bin:PATH: H O M E / b i n e x p o r t A M O E B A H O M E = / u s r / l o c a l / a m o e b a / e x p o r t P A T H = HOME/bin export AMOEBA_HOME=/usr/local/amoeba/ export PATH= HOME/binexportAMOEBAHOME=/usr/local/amoeba/exportPATH=PATH:$AMOEBA_HOME/bin

在配置文件中加入上述内容,为了让系统找jdk的时候先找1.6。

修改完启动文件 source /etc/profile

java -version

java环境已经配置完成

安装并配置Amoeba软件

mkdir /usr/local/amoeba

tar … -C /usr/local/amoeba

chmod -R 755 /usr/local/amoeba

/usr/local/amoeba/bin/amoeba

amoeba start | stop 现实此内容说明amoeba安装成功

配置amoeba读写分离,两个slave读负载均衡

master , slave1 , slave2 中开放权限给amoeba 访问

grant all on * . * to test@ ‘192.168.88.%’ identified by ‘123.com’ 在三台数据库中各执行一次。

配置amoeba.xml配置文件

cd /usr/local/amoeba

vim conf/amoeba.xml

编辑dbServers.xml配置文件

配置无误后,可以启动amoeba 软件其默认端口为tcp 8066。

bin/amoeba start&启动

netstat -tunlp |grep java查看java环境端口号

在client 主机上测试:yum install mysql -y 安装mysql

可以通过访问代理:mysql -u amoeba -p123456 -h 192.168.

你可能感兴趣的:(Linux,数据库主从复制与读写分离(改))