一、主从复制
1、两台MySQL服务器,一台为主,一台为从(辅助、备份)
192.168.10.166(主)
192.168.10.130(从)
2、将两台MySQL服务器的时间进行同步,以主为基准
#192.168.10.166(主)的配置
yum -y install ntp
echo "server 127.127.1.0" >> /etc/ntp.conf
echo "fudge 127.127.1.0 stratum 8" >> /etc/ntp.conf
systemctl start ntpd
#192.168.10.130(从)配置
yum -y install ntpdate
ntpdate 192.168.10.166
3、安装MySQL数据库,这里直接使用yum进行安装
#主和从准备工作
yum -y install wget
wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
rpm -ivh mysql80-community-release-el7-6.noarch.rpm
sed -i '5s/0/1/' /etc/yum.repos.d/mysql-community.repo
sed -i '6s/1/0/' /etc/yum.repos.d/mysql-community.repo
sed -i '13s/1/0/' /etc/yum.repos.d/mysql-community.repo
yum -y install mysql-community-server
systemctl start mysqld
#查看日志里面的原始密码
cat /var/log/mysqld.log
#登录MySQL数据库
mysql -uroot -p
#输入刚查询的密码
Enter password:*Loqy&Yeg8Fo
#进入数据库里改密码
alter user user() identified by 'Woniu.123';
4、192.168.10.166(主)服务器配置
#修改MySQL的配置文件
echo "server-id = 11 >> /etc/my.cnf
echo "log_bin = master-bin" >> /etc/my.cnf
echo "log-slave-updates = true" >> /etc/my.cnf
#进入MySQL数据库添加授权
mysql -uroot -pWoniu.123
#为从服务器添加授权
grant replication slave on *.* to 'myslave'@'192.168.10.%' identified by 'Wniu.123
刷新权限
flush privileges;
#查看 master 状态,找到 position 字段信息,这里是154
show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 | 154 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#如果用了上面命令没查看到 position 字段信息,重启一下服务就好了
systemctl restart mysqld
5、192.168.10.130(从)服务器配置
#修改MySQL的配置文件
echo "server-id = 22 >> /etc/my.cnf
echo "relay-log = relay-log-bin" >> /etc/my.cnf
echo "relay-log-index = slave-relay-bin.index" >> /etc/my.cnf
systemctl restart mysqld
#登录从服务器的MySQL上,配置同步
change master to master_host='192.168.10.166',master_user='myslave',master_password='Woniu.123',master_log_file='master-bin.000001',master_log_pos=154;
start slave;
show slave status\G;
Slave_IO_Running: Yes
#此项如果非 Yes 检查连接配置同步 master_log_pos=值 是否与 master 状态的 position 字段一致
Slave_SQL_Running: Yes
#此项如果非 Yes 需要先停止从复制
mysql> stop slave;
mysql> set global sql_slave_skip_counter=1;
#当出现复制错误时,使用此方式让sql线程跳过遇到错误的事件,一般为1,跳过当前event即可
mysql> start slave;
二、读写分离
1、完成MySQL的主从配置
2、需要有一台新的Linux来部署amoeba
IP:192.168.10.163
-
先关闭防火墙允许8066端口
firewall-cmd --zone=public --add-port=tcp/8066
-
部署jdk,使用的是jdk1.6_14的版本
chmod +x jdk-6u14-linux-x64.bin
./jdk-6u14-linux-x64.bin
mv jdk1.6.0_14/ /usr/local/jdk1.6
-
安装amoeba,使用的是2.2.0版本
mkdir amoeba2
tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C amoeba2/
mv amoeba2/ /usr/local/amoeba
-
配置环境变量
echo "export JAVA_HOME=/usr/local/jdk1.6" >> /etc/profile
echo "export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib" >> /etc/profile
echo "export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin" >> /etc/profile
echo "export AMOEBA_HOME=/usr/local/amoeba" >> /etc/profile
echo "export PATH=$PATH:$AMOEBA_HOME/bin" >> /etc/profile
source /etc/profile
#检查jdk是否有安装成功,回显下面内容
/usr/local/jdk1.6/bin/java -version
#下面为回显内容
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
-
确定amoeba是否有安装成功
/usr/local/amoeba/bin/amoeba #直接执行此文件
#回显下面内容表示安装成功
amoeba start|stop
-
在主MySQL服务器上进行授权用户
#在主服务器上登录MySQL,授权用户给amoeba服务器使用
grant all on *.* to 'amoebatest'@'192.168.10.%' identified by 'Woniu.123';
-
修改amoeba主配置文件
vim /usr/local/amoeba/conf/amoeba.xml
<property name="port">8066</property> #第11行,amoeba服务器的默认监听端口,客户端在访问时需要使用此端口
<property name="user">amoeba</property> #第30行,客户端访问amoeba服务器所使用的用户名
<property name="password">123456</property> #第32行,客户端访问amoeba服务器所使用的密码
<property name="defaultPool">master</property> #第115行,对数据库的默认操作,指定为主服务器
<property name="writePool">master</property> #第118行,对数据库的写操作,指定为主服务器
<property name="readPool">slaves</property> #第119行,对数据库的读操作,指定为从服务器,这里是一个集群名称
-
修改amoeba的后端MySQL数据库服务器配置文件
vim /usr/local/amoeba/conf/dbServers.xml
<property name="port">3306</property> #第20行,表示amoeba去连接数据库的端口号
<property name="schema">woniuxy</property> #第23行,表示客户机连接进去后的默认数据库
<property name="user">amoebatest</property> #第26行,前面在主MySQL上授权的用户名
<property name="password">Woniuxy.1314</property> #第29行,前面在主MySQL上授权的用户名密码
<dbServer name="master" parent="abstractServer"> #第45行,amoeba主配置文件中指定的写操作MySQL服务器名称
<property name="ipAddress">192.168.88.142</property> #第48行,写操作MySQL服务器的IP地址
<dbServer name="slave1" parent="abstractServer"> #第52行,amoeba主配置文件中指定的读操作MySQL服务器名称
<property name="ipAddress">192.168.88.145</property> #第55行,读操作MySQL服务器的IP地址
<dbServer name="slaves" virtual="true"> #第59行,读操作的集群名称,和主配置文件中的名称一致
<property name="poolNames">slave1</property> #第65行,集群中的服务器数量,如果有多台,使用逗号分隔
-
启动amoeba服务器
/usr/local/amoeba/bin/amoeba start
#检测是否启动成功
netstat -anpt #查看进程,是否有java的进程,如果有表示启动成功