Verwenden Sie maxscale, um eine Lese- und Schreibtrennung von MySQL zu erreichen

1. Bereiten Sie drei Server vor (centos7.6)

maxscale IP: 192.168.1.58 Lese- / Schreib-Trennungs-Middleware
Mariadb (Meister) IP: 192.168.1.60 Schreiboperation
Mariadb (Sklave) IP: 192.168.1.63 Lesevorgang

2.Mariadb Master-Slave-Konfiguration

Anmerkungen: yum Installation von Mariadb, Mariadb-Server wird nicht auf Details eingehen

2.1: Ändern Sie die Mariadb-Konfigurationsdatei auf den beiden Servern, um die Master-Slave-Replikation von mysqlbinlog zu unterstützen

cp  /usr/share/mysql/my-huge.cnf  /etc/my.cnf

2.2: Ändern Sie die Server-ID = Wert in my.cnf, ändern Sie die Server-ID der beiden Server auf unterschiedliche Werte

2.3: Starten Sie das Master-Mariadb (192.168.1.60), melden Sie sich zur Autorisierung an, fragen Sie den Master-Status ab, zeichnen Sie den Dateinamen mysql-bin.000007 und das Binlog-Startbit 2942 auf. Diese beiden Daten werden verwendet, wenn Sie die Autorisierung vom Server erhalten

grant  replication slave on *.* to slave@'%' identified by '123456';
show master  status;

2.4 Starten Sie von Mariadb (192.168.1.63), melden Sie sich an, um die Autorisierung zu erhalten, starten Sie den Slave und überprüfen Sie den Status

change master to 
master_user='slave',
master_password='123456',
master_host='192.168.1.60',
master_log_file='mysql-bin.000007',
master_log_pos=2942;
start slave;
#\G的作用是以key:value的形式一行一行显示
show  slave status\G;

3. Konfigurieren Sie die maximale Lese- / Schreibtrennung

3.1 Laden Sie maxscale und einige seiner Abhängigkeiten bei maxscale herunter und installieren Sie sie (192.168.1.58).

yum install libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 libedit -y
wget https://downloads.mariadb.com/MaxScale/1.4.5/centos/7/x86_64/maxscale-1.4.5-1.centos.7.x86_64.rpm
rpm -ivh maxscale-1.4.5-1.centos.7.x86_64.rpm

3.2 Melden Sie sich beim Haupt-Mariadb (192.168.1.60) an, um einen Überwachungsbenutzer (maxmon) und einen Routing-Benutzer (maxrou) zu erstellen.

grant  replication slave ,replication client on *.* to maxmon@'%' identified by  '123456';
grant  all on *.* to maxrou@'%' identified by '123456';

3.3 Ändern der maxscale-Konfigurationsdatei (192.168.1.58)

vim /etc/maxscale.cnf
[maxscale]
threads=1

# Server definitions
# Set the address of the server to the network
# address of a MySQL server.

#定义数据库服务器
[server1]
type=server
#主数据库地址master
address=192.168.1.60
port=3306
protocol=MySQLBackend

#定义数据库服务器
[server2]
type=server
#从数据库地址slave
address=192.168.1.63
port=3306
protocol=MySQLBackend

#定义要监视的服务器总共两台,监控的用户
[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2
user=maxmon
passwd=123456
monitor_interval=10000

# Service definitions
# Service Definition for a read-only service and
# a read/write splitting service.

# 读负载均衡模块
# 读写分离模块可以实现读负载均衡,因此注释掉该模块
#[Read-Only Service]
#type=service
#router=readconnroute
#servers=server2
#user=maxrou
#passwd=123456
#router_options=slave

# 定义读写分离服务及路由用户
[Read-Write Service]
type=service
router=readwritesplit
# 主从数据库
servers=server1,server2
# 设置路由用户名和密码
user=maxrou
passwd=123456
max_slave_connections=100%

# 定义管理服务
[MaxAdmin Service]
type=service
router=cli

# 注释监听
#[Read-Only Listener]
#type=listener
#service=Read-Only Service
#protocol=MySQLClient
#port=4008

# 定义读写分离服务的端口4006
[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006

# 定义管理服务监听端口6603
[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
port=6603

3.4 Status starten und anzeigen (192.168.1.58)

systemctl  start maxscale
systemctl status  maxscale

netstat  -antp

4. Testüberprüfung

4.1 Melden Sie sich beim MaxScale-Manager (192.168.1.58) an, um den Status der Datenbankverbindung anzuzeigen. Der Standardbenutzername und das Standardkennwort lauten admin / mariadb

maxadmin -uadmin -pmariadb -P6603
list servers

4.2 Erstellen Sie einen Testbenutzer, melden Sie sich bei der Hauptmariadb (192.168.1.60) an, um einen Testbenutzertest zu erstellen

grant all on *.* to  test@'%' identified by '123456';

4.3 Erstellen Sie eine Testdatenbank in der Hauptdatenbank mariadb (192.168.1.60), erstellen Sie eine Tabelle wen und fügen Sie den Wert ein


create  database test;

use test;

create table wen(id int);

insert into wen values(1),(2);

Suchen Sie den Test in der Slave-Datenbank mariadb (192.168.1.63) und fügen Sie den Wert in die Tabelle wen ein

insert into wen values (9);

Hinweis: Die Master-Slave-Replikation wurde zu Beginn implementiert, die Daten in der Master-Datenbank (192.168.1.60) werden automatisch mit der Slave-Datenbank (192.168.1.63) synchronisiert und die neuen Daten aus der Slave-Datenbank nicht synchronisiert mit der Master-Datenbank

4.4 Verwenden Sie auf dem MaxScale-Server (192.168.1.58) den MySQL-Client, um eine Verbindung zu MaxScale herzustellen

mysql -utest -p123456  -h'192.168.1.58' -P4006

 Fragen Sie alle Daten in der Tabelle test.wen ab. Die Daten sind dieselben wie in der Tabelle test.wen in der sekundären Datenbank, mit einem Datensatz mehr als in der Hauptdatenbank test.wen

Fügen Sie zwei Daten über den MySQL-Client des Proxyservers maxscale (192.168.1.58) ein und zeigen Sie die Ergebnisse an

Zeigen Sie die Ergebnisse über den MySQL-Client des Hauptservers (192.168.1.60) an

Zeigen Sie die Ergebnisse über den MySQL-Client vom Server aus an (192.168.1.63).

Schlussfolgerung: Der Master-Server (192.168.1.60) wird zum Schreiben verwendet, da das Schreiben von Daten auf den Slave-Server nicht mit dem Master-Server synchronisiert wird und das Lesen vom Slave-Server (192.168.1.63) gelesen wird.

Infolgedessen wird eine Master-Slave-Replikation realisiert und eine MySQL-Lese- / Schreibtrennung wird realisiert.

Ich denke du magst

Origin blog.csdn.net/qq_29644709/article/details/108381565
Empfohlen
Rangfolge