Mysql主从复制与读写分离案例

一、主从复制读写分离
1、主从复制的作用和特点
1)主从复制的作用
保证数据库数据的稳定性
2)主从复制的特点
需要开启二进制日志
从服务器监听主服务器二进制日志变化
将主服务器数据复制到从服务器上
主服务器故障数据不会丢失
2、读写分离
1)读写分离的作用
支持高并发合理分担负载任务
2)读写分离的特点
需要使用amoeba代理实现读写分离
客户端将写入数据提交到主mysql服务器
客户端将查询数据提交到从mysql服务器
读写分离实现力量负载分担增强服务稳定性支持高并发访问

配置主从复制,案例环境:

四台Linux服务器,一台客户端

一台master:配置主服务器,安装MySQL

两台slaves:分别安装MySQL

一台amoeba代理:安装amoeba代理

一台客户端:安装MySQL

推荐思路:

1)配置主从复制,安装NTP服务器,修改主配置文件

2)配置主MySQL服务器,修改主配置文件

3)创建主从复制账户名字为slave密码为pwd@123

4)配置从服务器,修改从MySQL主配置文件

5)设置从Master同步数据,启动从服务器

6)读写分离配置安装JDK

7)配置amoeba服务器,配置环境变量加载jdk和amoeba

8)配置amoeba登录MySQL读取和写入数据权限账户

9)修改amoeba主配置文件设置客户端访问amoeba账户密码

10)将MySQL主从服务器添加amoeba中,启动amoeba服务运行到后台

11)客户端测试连接amoeba,验证主从复制,读写分离

一.1.安装ntp服务器

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

2)修改ntp主配置文件

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

restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap

server 127.127.1.0

fudge 127.127.1.0 stratum 8

3)设置服务开机自动启动

[root@centos01~]# systemctl start ntpd

[root@centos01~]# systemctl enable ntpd

4)从MySQL服务器同步时间

[root@centos02~]# ntpdate 192.168.100.10

2.编译安装 mysql 数据库系统
1)、创建管理 mysql 的组及用户

[root@centos01~]# groupadd mysql

[root@centos01~]# useradd -M -s /sbin/nologin mysql -g mysql

2)、安装 MySQL 依赖程序 ncurses-devel

[root@centos01~]# mount /dev/cdrom /mnt/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@centos01~]# yum -y install ncurses-devel

3)、更换镜像文件、解压缩编译 MySQL 工具 cmake

[root@centos01~]# umount /mnt/

[root@centos01~]# mount /dev/cdrom /mnt/

mount: /dev/sr0 写保护,将以只读方式挂载

[root@centos01~]# tar zxvf /mnt/cmake-2.8.6.tar.gz -C /usr/src/

4)、配置 cmake

[root@centos01~]# cd /usr/src/cmake-2.8.6/

[root@centos01 cmake-2.8.6]# ./configure

5)、编译安装 cmqke 程序

[root@centos01 cmake-2.8.6]# gmake && gmake install

6)、解压 mysql 程序

[root@centos01~]# tar zxvf /mnt/mysql-5.5.22.tar.gz -C /usr/src/

7)、配置 mysql 程序

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
在这里插入图片描述

8)、编译安装 mysql 程序

[root@centos01 mysql-5.5.22]# make && make install

9)、设置安装目录数据的所有者

[root@centos01 ~]# chown -R mysql:mysql /usr/local/mysql/

10)、生成 mysql 服务配置文件

[[email protected]]# cp support-files/my-medium.cnf /etc/my.cnf

cp:是否覆盖"/etc/my.cnf"? y

11)、优化执行命令

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

/etc/profile

PATH="$PATH:/usr/local/mysql/bin/"

[root@centos01~]# source /etc/profile

12)、生成 mysql 服务控制文件

[root@centos01 mysql-5.5.22]# cp support-files/mysql.server /etc/init.d/mysqld

13)、设置服务的执行权限

[root@centos01
~]# chmod +x /etc/init.d/mysqld

14)、添加系统服务

[root@centos01~]# chkconfig --add mysqld

[root@centos01~]# chkconfig --level 35 mysqld on

15)、初始化管理数据的账户数据库位置和数据位置

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

在这里插入图片描述

16)、启动 mysql 服务

[root@centos01~]# systemctl start mysqld

17)、监听 mysql 端口
在这里插入图片描述

18)、为 mysql 数据库设置密码

[root@centos01~]# mysqladmin -u root password ‘pwd@123’

三台linux都安装MySQL数据库,命令一样

3.配置主MySQL服务器
1)修改MySQL主配置文件

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

log-bin=mysql-bin

log-slave-updates = true

server-id = 10

重启MySQL数据库

[root@centos01~]# systemctl restart mysqld

2)登录数据库创建主从复制账户名字为slave密码为pwd@123

[root@centos01~]# mysql -u root -p

mysql> grant replication slave on . to ‘slave’@‘192.168.100.%’ identified by ‘pwd@123’;

3)查看Master状态

mysql> show master status;
Mysql主从复制与读写分离案例_第1张图片

4.配置从服务器
1)修改从MySQL主配置文件

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

log-bin=mysql-bin

relay-log=relay-log-bin

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

server-id = 11

2)重新启动数据库服务

[root@centos02~]# systemctl restart mysqld

3)登录数据库设置从Master同步数据

[root@centos02~]# mysql -uroot -ppwd@123

mysql>change master to
master_host=‘192.168.100.10’,master_user=‘slave’,master_password=‘pwd@123’,master_log_file=‘mysql-bin.000004’,master_log_pos=263;

4)启动从服务器

mysql> start slave;

5)查看从服务器

mysql> show slave status\G;
Mysql主从复制与读写分离案例_第2张图片

配置第三台从服务器

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

log-bin=mysql-bin

relay-log=relay-log-bin

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

server-id = 12

重新启动数据库服务

[root@centos03~]# systemctl restart mysqld

登录数据库设置从Master同步数据

[root@centos03~]# mysql -uroot -ppwd@123

mysql>change master to
master_host=‘192.168.100.10’,master_user=‘slave’,master_password=‘pwd@123’,master_log_file=‘mysql-bin.000004’,master_log_pos=263;

启动从服务器,第三台配置完成

mysql> start slave;

验证主从复制,在主上面创建benet库,去从服务器上去查看

mysql> create database benet;

[root@centos02~]# mysql -uroot -ppwd@123

mysql> show databases;

Mysql主从复制与读写分离案例_第3张图片

二.读写分离

1.配置安装jdk
1)创建安装JDK目录

[root@centos04~]# mkdir /usr/local/jdk

2)配置安装JDK,使用Linux光盘

[root@centos04~]# cp /mnt/jdk-6u14-linux-x64.bin /usr/local/jdk/

[root@centos04~]# cd /usr/local/jdk/

[root@centos04 jdk]# ./jdk-6u14-linux-x64.bin

[root@centos04 jdk]# mv ./jdk1.6.0_14/* ./

3)设置JDK权限

[root@centos04~]# chmod -R 755 /usr/local/jdk/

2.配置amoeba服务器
1)创建amoeba目录

[root@centos04~]# mkdir /usr/local/amoeba

2)解压缩amoeba

[root@centos04~]# tar zxvf /mnt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

3)添加执行权限

[root@centos04~]# chmod -R 755 /usr/local/amoeba/

4)配置环境变量加载jdk和amoeba

[root@centos04~]# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/local/jdk/

export CLASSPATH= C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH= J A V A H O M E / l i b : JAVA_HOME/lib: JAVAHOME/lib:JAVA_HOME/jre/bin: P A T H : PATH: PATH:HOME/bin

exportmAMOEBA_HOME=/usr/local/amoeba/

export PATH= P A T H : PATH: PATH:AMOEBA_HOME/bin

5)更新环境变量

[root@centos04~]# source /etc/profile.d/java.sh

[root@centos04~]# java -version 没配置之前是1.8.0版本
java -version
java version “1.6.0_14”

3.主服务器配置amoeba登录MySQL读取和写入数据权限账户

mysql> grant all on . to ‘bob’@‘192.168.100.%’ identified by ‘pwd@123’;

4.修改amoeba主配置文件设置客户端访问amoeba账户密码

[root@centos04 ~]# vim /usr/local/amoeba/conf/amoeba.xml
Mysql主从复制与读写分离案例_第4张图片

将Mysql主服务器添加amoeba中

[root@centos04~]# vim /usr/local/amoeba/conf/dbServers.xml
Mysql主从复制与读写分离案例_第5张图片
Mysql主从复制与读写分离案例_第6张图片
Mysql主从复制与读写分离案例_第7张图片
启动amoeba服务运行到后台
moeba/bin/amoeba start&

[root@centos04 ~]# netstat -anptu | grep 8066
在这里插入图片描述
在这里插入图片描述

7.客户端测试连接amoeba

安装MySQL数据库

[root@centos05~]# yum -y install mysql

1)登录amoeba

[root@centos05~]# mysql -uamoeba -ppwd@123 -h 192.168.100.40 -P 8066

2)创建数据库,测试写入去其他服务器查看

MySQL [(none)]> create database bdqn;
Mysql主从复制与读写分离案例_第8张图片

3)创建表

MySQL [bdqn]>create table student (姓名 char(10),性别 char(5),年龄 char(5),电话 char(11),primary key (电话));

4)插入数据

MySQL [bdqn]> insert into bdqn.student value (‘王超’,‘男’,‘18’,‘13581665204’);

在从服务器上面查看,可以查看到,停止服务,继续在aomeba写入数据在查看验证读

Mysql主从复制与读写分离案例_第9张图片

mysql> stop slave;

MySQL [bdqn]> insert into bdqn.student value (‘张航’,‘男’,‘18’,‘13581665201’);
Mysql主从复制与读写分离案例_第10张图片

说明查是在从服务器

你可能感兴趣的:(Linux,MySQL主从复制,MySQL读写分离)