MySQL主從複製與讀寫分離

1.1案例環境
MySQL主從複製與讀寫分離java

1.創建時間同步環境,在主節點上搭建時間同步服務器。
1)安裝NTP
[root@mysql ~]# yum -y install ntp

2)配置NTP
[root@mysql ~]# vim /etc/ntp.conf    //添加以下兩行
server 127.127.1.0
fudge 127.127.1.0 stratum 8

3)重啓服務並設置爲開機啓動
[root@mysql ~]# systemctl  restart  ntpd
[root@mysql ~]# systemctl  enable  ntpd

2.在從節點上進行時間同步。mysql

[root@mysql ~]# yum -y install ntpdate
[root@mysql ~]# ntpdate 192.168.1.101  //同步主時間服務器

1)安裝mysql數據庫。在master,slave1,slave2上安裝。
編譯安裝mysql
MySQL主從複製與讀寫分離
2)優化調整。
MySQL主從複製與讀寫分離
3)初始化數據庫。
MySQL主從複製與讀寫分離
4)啓動mysql服務linux

[root@mysql ~]# systemctl  restart mysqld
[root@mysql ~]# msqladmin -u root password 'pwd123'  //爲root用戶設置密碼

3.配置mysql master主服務器sql

[root@mysql ~]# vim /etc/my.cnf 
 server_id = 11  //修改
 log_bin = master-bin //修改
 log-slave-updates = true //增長
重啓mysql服務
[root@mysql ~]# systemctl  restart mysqld.service
1)登陸mysql程序,給從服務器以受權。
[root@mysql ~]# mysql -u root -p
mysql> grant replication slave on *.* to 'myslave'@'192.168.1%' identified by '123456';
mysql> flush privileges;
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000001 |      409 |              |                  |                   |
+-------------------+----------+--------------+------------------+-------------------+

4.配置從服務器數據庫

[root@mysql ~]# vim /etc/my.cnf
 server_id = 22   //修改
relay-log=relay-log-bin  //增長
relay-log-index=slave-relay-bin.index  //增長
重啓mysql服務
[root@mysql ~]# systemctl  restart mysqld

1)登陸mysql,配置同步
[root@mysql ~]# mysql -u root -p
mysql> change master to master_host='192.168.1.101',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=409; vim

2)啓動同步
mysql> start slave; 服務器

3)查看slave狀態,確保如下兩個值爲yes
mysql> show slave status\G;
MySQL主從複製與讀寫分離負載均衡

5.驗證主從複製效果tcp

1)在主,從服務器上登陸mysql
[root@mysql ~]# mysql -u root -p
mysql> show databases;
2)在主服務器上新建數據庫如db_test
mysql> create database db_test; 
Query OK, 1 row affected (0.00 sec)
3)在主,從服務器上分別查看數據庫,顯示數據庫相同,則主從複製成功。
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db_test            |
| mysql              |
| performance_schema |
| test               |
| tttttt             |
+--------------------+

1.2搭建mysql讀寫分離ide

1)在主機amoeba上安裝java環境
[root@localhost ~]# mount /dev/cdrom  /media/
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@localhost ~]# cd /media/
[root@localhost media]# ls
amoeba-mysql-binary-2.2.0.tar.gz  jdk-6u14-linux-x64.bin
[root@localhost media]# cp * /usr/src/
[root@localhost media]# cd /usr/src/
[root@localhost src]# chmod +x jdk-6u14-linux-x64.bin 
[root@localhost src]# ./jdk-6u14-linux-x64.bin 
[root@localhost src]# mv jdk1.6.0_14/ /usr/local/jdk1.6
[root@localhost src]# vim /etc/profile
2)配置amoeba讀寫分離,兩個slave讀負載均衡
master,slave1,slave2中開放權限amoeba訪問
mysql> grant all on *.* to test@'192.168.1.%' identified by '123.com';
[root@localhost ~]# cd /usr/local/amoeba/
[root@localhost amoeba]# vim conf/amoeba.xml 
增長如下配置:
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
[root@localhost src]# source /etc/profile
[root@localhost src]# 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)
                            java環境已配置成功
3)安裝並配置amoeba軟件
[root@localhost ~]# mkdir /usr/local/amoeba
[root@localhost media]# tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba
[root@localhost ~]# chmod -R 755 /usr/local/amoeba/
[root@localhost ~]# /usr/local/amoeba/bin/amoeba
amoeba start|stop //顯示此內容說明amoeba安裝成功

1.配置amoeba讀寫分離,兩個slave讀寫負載均衡。
master,slave1,slave2中開放權限給amoeba訪問。

mysql> grant all on *.* to test@'192.168.1.%' identified by '123.com';
Query OK, 0 rows affected (0.00 sec
1)編輯amoeba.xml配置文件
[root@localhost ~]# cd /usr/local/amoeba/
[root@localhost amoeba]# vim conf/amoeba.xml

如下修改後的內容爲帶下劃線的部分
MySQL主從複製與讀寫分離
如下修改後的內容爲帶下劃線的部分,注意刪除註釋
MySQL主從複製與讀寫分離

2)編輯dbservers.xml配置文件
[root@localhost amoeba]# vim conf/dbServers.xml

如下修改後的內容爲帶下劃線的部分
MySQL主從複製與讀寫分離
如下修改後的內容爲帶下劃線的部分
MySQL主從複製與讀寫分離
MySQL主從複製與讀寫分離

3)配置無誤後能夠啓動amoeba軟件,其默認端口爲tcp8066
[root@localhost amoeba]# bin/amoeba start&
MySQL主從複製與讀寫分離

2.測試 在Client主機上:

[root@localhost ~]# yum -y install mysql
Loaded plugins: fastestmirror, langpacks
aaa                                                             | 3.6 kB  00:00:00     
(1/2): aaa/group_gz                                             | 155 kB  00:00:00     
(2/2): aaa/primary_db                                           | 3.0 MB  00:00:00     
Determining fastest mirrors
能夠經過代理訪問mysql:
[root@localhost ~]# mysql -u amoeba -p123456 -h 192.168.1.110 -P8066
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2089015486
Server version: 5.1.45-mysql-amoeba-proxy-2.2.0

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>
1)在master上建立一個表,同步到從服務器上,而後關掉各從服務器的slave功能,在插入區別語句。
mysql> use db_test; 
mysql> create table zang (id int(10),name varchar(10),address varchar(20));
Query OK, 0 rows affected (0.09 sec)
分別在兩臺從服務器上:
mysql> stop slave; 
Query OK, 0 rows affected (0.01 sec)

2)從服務器上同步了表,手動插入其餘內容:

MySQL主從複製與讀寫分離

3)測試讀操做
在client主機上第一次查詢的結果以下
MySQL主從複製與讀寫分離

相關文章
相關標籤/搜索