基于MaxScale搭建MariaDB读写分离集群的方法【2024年最新版】 ...

打印 上一主题 下一主题

主题 1034|帖子 1034|积分 3102

1、什么是MaxScale

MaxScale是MariaDB数据库的一个中间件,为MariaDB提供代理服务,重要可以实现读写分离和一定的负载均衡功能,其中读写分离可将读操纵和写操纵分离到不同的数据库服务器上,以提高系统的团体性能和扩展性,而正是读写分离功能,使得MaxScale具备已经的负载均衡特性。
2、搭建环境


3、搭建步调

3.1、分别在两台OpenEuler上安装MariaDB数据库并分别完成初始化(两台服务器步调雷同)

(1)实行安装下令“yum install mariadb-server -y”;

(2)实行启动MariaDB数据库下令“systemctl start mariadb”;

(3)实行MariaDB初始化下令“mysql_secure_installation”,并按自身需求完成MariaDB初始化,初始化案例如下:
  1. [root@localhost ~]# mysql_secure_installation
  2. NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
  3.       SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
  4. In order to log into MariaDB to secure it, we'll need the current
  5. password for the root user.  If you've just installed MariaDB, and
  6. you haven't set the root password yet, the password will be blank,
  7. so you should just press enter here.
  8. Enter current password for root (enter for none):   #输入事先设置的数据库root账户密码
  9. OK, successfully used password, moving on...
  10. Setting the root password ensures that nobody can log into the MariaDB
  11. root user without the proper authorisation.
  12. You already have a root password set, so you can safely answer 'n'.
  13. Change the root password? [Y/n] n   #是否改变root用户密码?
  14. ... skipping.
  15. By default, a MariaDB installation has an anonymous user, allowing anyone
  16. to log into MariaDB without having to have a user account created for
  17. them.  This is intended only for testing, and to make the installation
  18. go a bit smoother.  You should remove them before moving into a
  19. production environment.
  20. Remove anonymous users? [Y/n] n   #是否删除匿名用户?
  21. ... skipping.
  22. Normally, root should only be allowed to connect from 'localhost'.  This
  23. ensures that someone cannot guess at the root password from the network.
  24. Disallow root login remotely? [Y/n] n   #是否不允许root用户直接登录?
  25. ... skipping.
  26. By default, MariaDB comes with a database named 'test' that anyone can
  27. access.  This is also intended only for testing, and should be removed
  28. before moving into a production environment.
  29. Remove test database and access to it? [Y/n] n   #是否删除测试数据库?
  30. ... skipping.
  31. Reloading the privilege tables will ensure that all changes made so far
  32. will take effect immediately.
  33. Reload privilege tables now? [Y/n] y   #是否重新加载权限信息?
  34. ... Success!
  35. Cleaning up...
  36. All done!  If you've completed all of the above steps, your MariaDB
  37. installation should now be secure.
  38. Thanks for using MariaDB!
复制代码
(4)输入以下代码分别在两套MariaDB上创建监控用户“monitor”和路由用户“maxscale”,并授予monitor用户replication slave权限和super权限,授予maxscale所有权限:
  1. # 路由账号
  2. create user 'maxscale'@'%' identified by 'ymh123';
  3. grant all on *.* to maxscale@'%';
  4. # 监控账号
  5. create user 'monitor'@'%' identified by 'ymh123';
  6. grant replication slave,super on *.* to 'monitor'@'%';
复制代码
3.2、将两套MariaDB数据库设置为主从关系

3.2.1、配置MariaDB-Master

(1)在192.168.174.136服务器上输入下令“vim /etc/my.cnf”,并在[mysqld]字段下添加如下配置,并生存退出:
  1. server-id=1
  2. log-bin=mysql-bin
复制代码

(2)输入下令“systemctl restart mariadb”重启MariaDB数据库;

(3)输入下令“mysql -u root”进入数据库,并输入下令“show master status;”记录好“File”字段下的binlog文件的文件名和“Position”字段下的数值,如下:

3.2.2、配置MariaDB-Slave

(1)在192.168.174.136服务器上输入下令“vim /etc/my.cnf”,并在[mysqld]字段下添加如下配置,并生存退出(server-id要与Master不同,且不写入log-bin字段):
  1. server-id=2
复制代码
(2)输入下令“systemctl restart mariadb”重启MariaDB数据库;

(3)输入下令“mysql -u root”进入数据库,并输入下令“change master to master_host = '192.168.174.136', master_user = 'monitor', master_password = 'ymh123', master_log_file = 'mysql-bin.000006', master_log_pos = 594;”最后输入“exit”退出MariaDB数据库;


(4)输入下令“systemctl restart mariadb”重启MariaDB数据库后,输入“mysql -u root”进入数据库;

(5)输入下令“show slave status\G;”如果以下两个字段都是yes,则主从搭建成功(当然,可在Master举行写操纵,如果同步到slave,则主从没问题):

4、安装并配置MaxScale

(1)进入MariaDB官方网站,找到对应版本的MaxScale安装包,并下载;


(2)通过dpkg下令对安装包举行本地安装,需要留意的是,安装过程中可能会缺乏须要的依赖,如果出现缺依赖的环境,此时通过“apt install -f”下令自动增补依赖;


(3)输入“vim /etc/maxscale.cnf”下令,对MaxScale举行如下配置:
  1. [maxscale]
  2. threads=auto
  3. [server1]
  4. type=server
  5. address=192.168.174.136
  6. port=3306
  7. [server2]
  8. type=server
  9. address=192.168.174.130
  10. port=3306
  11. [MariaDB-Monitor]
  12. type=monitor
  13. module=mariadbmon
  14. servers=server1,server2   #监控模块写入所有MariaDB节点
  15. user=monitor
  16. password=ymh123
  17. monitor_interval=2s
  18. #本实验只涉及读写分离,不涉及只读,因此只读模块注释掉不配置
  19. #[Read-Only-Service]
  20. #type=service
  21. #router=readconnroute
  22. #servers=server1
  23. #user=service_user
  24. #password=service_pw
  25. #router_options=slave
  26. [Read-Write-Service]
  27. type=service
  28. router=readwritesplit
  29. servers=server1,server2
  30. user=maxscale
  31. password=ymh123
  32. #本实验只涉及读写分离,不涉及只读,因此只读模块注释掉不配置
  33. #[Read-Only-Listener]
  34. #type=listener
  35. #service=Read-Only-Service
  36. #protocol=mariadbprotocol
  37. #port=4008
  38. [Read-Write-Listener]
  39. type=listener
  40. service=Read-Write-Service
  41. protocol=mariadbprotocol
  42. port=4006
复制代码
(4)输入下令“systemctl restart maxscale”重启MaxScale;

(5)输入下令“maxctrl list servers”,若出现下图结果,则MaxScale读写分离搭建成功;

(6)检察MaxScale读写分离模块的监听端口,为默认的4006端口

5、读写分离验证

在读写分离验证之前,我们需要明确MariaDB主从架构的一个特点,即数据的同步只能是Master节点向Slave节点单方向举行同步。因此如果在Slave节点举行写操纵,则写入的数据不会同步到Master节点中。

基于上述特性,如果通过MaxScale转发出来的写操纵,写入的数据在Master和 Slave两个节点同时存在,则该写操纵是由MaxScale分配到Master节点,然后由Master节点主从同步到Slave,步调如下:
(1)打开数据库客户端,连接到MaxScale节点的4006端口;

(2)举行写操纵,并验证Master和Slave节点是否同时存在写入的数据;


(3)通过SQL语句“select @@hostname”检察读操纵访问的节点(需提前修改数据库服务器的主机名)

综上,读写分离配置成功。
6、留意事项

(1)创建用户时,监控用户monitor除赋予replication slave权限外,还要赋予super权限,否则MaxScale与MariaDB通过monitor用户建立监控进程时,会出现认证错误(Auth Error),这一点无论是在国内其他文章还是在官方英文文档中,都没有指明,如果出现认证错误,此时最佳的排查方式是检察路径为/var/log/maxscale/maxscale.log的日志内容;


(2)举行写操纵后,不要单纯利用“select @@hostname”来判断写操纵的节点,由于“select @@hostname”本身是读操纵语句,只能判断自己,结果也一定是slave节点;
(3)OpenEuler系统本身暂未适配MaxScale,如果要在OpenEuler上安装MaxScale,最好的方式是利用容器版本的MaxScale;
(4)MaxScale不具备高可用功能,需要配合MariaDB的其他高可用方案利用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表