部署mysql主从同步,部署mysql数据读写分离结构+mycat2

发布时间:2024年01月23日

主要命令

 
  • [root@mysql59 ~]# yum –y install mysql-server mysql
  • [root@mysql59 ~]# systemctl start mysqld
  • [root@mysql59 ~]# vim /etc/my.cnf.d/mysql-server.cnf
  • [mysqld]
  • server-id=59
  • log-bin=mysql59
  • :wq
  • [root@mysql59 ~]# systemctl restart mysqld
  • //用户授权
  • [root@mysql59 ~]# mysql
  • mysql> create user repluser@"%" identified by "123qqq...A"; 创建用户
  • Query OK, 0 rows affected (0.11 sec)
  • mysql> grant replication slave on *.* to repluser@"%"; 授予权限
  • Query OK, 0 rows affected (0.09 sec)
  • //查看日志信息
  • mysql> show master status;
  • +----------------+----------+--------------+------------------+-------------------+
  • | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  • +----------------+----------+--------------+------------------+-------------------+
  • | mysql59.000001 | 667 | | | |
  • +----------------+----------+--------------+------------------+-------------------+
  • 1 row in set (0.00 sec)

配置slave服务器MySQL60

  1. //指定server-id 并重启数据库服务
  2. [root@mysql60 ~]# yum –y install mysql-serv????er mysql
  3. [root@mysql60 ~]# systemctl start mysqld
  4. [root@mysql60 ~]# vim /etc/my.cnf.d/mysql-server.cnf
  5. [mysqld]
  6. server-id=60
  7. :wq
  8. [root@mysql60 ~]# systemctl restart mysqld
  9. //登陆服务指定主服务器信息
  10. [root@mysql60 ~]# mysql
  11. mysql> change master to master_host="192.168.88.59" , master_user="repluser" , master_password="123qqq...A" ,master_log_file="mysql59.000001" , master_log_pos=667;
  12. Query OK, 0 rows affected, 8 warnings (0.34 sec)
  13. //启动slave进程
  14. mysql> start slave ;
  15. Query OK, 0 rows affected, 1 warning (0.04 sec)
  16. //查看状态信息
  17. mysql> show slave status \G
  18. *************************** 1. row ***************************
  19. Slave_IO_State: Waiting for source to send event
  20. Master_Host: 192.168.88.59
  21. Master_User: repluser
  22. Master_Port: 3306
  23. Connect_Retry: 60
  24. Master_Log_File: mysql59.000001
  25. Read_Master_Log_Pos: 667
  26. Relay_Log_File: mysql60-relay-bin.000002
  27. Relay_Log_Pos: 322
  28. Relay_Master_Log_File: mysql59.000001
  29. Slave_IO_Running: Yes //IO线程
  30. Slave_SQL_Running: Yes //SQL线程
  31. Replicate_Do_DB:
  32. Replicate_Ignore_DB:
  33. Replicate_Do_Table:
  34. Replicate_Ignore_Table:
  35. Replicate_Wild_Do_Table:
  36. Replicate_Wild_Ignore_Table:
  37. Last_Errno: 0
  38. Last_Error:
  39. Skip_Counter: 0
  40. Exec_Master_Log_Pos: 667
  41. Relay_Log_Space: 533
  42. Until_Condition: None
  43. Until_Log_File:
  44. Until_Log_Pos: 0
  45. Master_SSL_Allowed: No
  46. Master_SSL_CA_File:
  47. Master_SSL_CA_Path:
  48. Master_SSL_Cert:
  49. Master_SSL_Cipher:
  50. Master_SSL_Key:
  51. Seconds_Behind_Master: 0
  52. Master_SSL_Verify_Server_Cert: No
  53. Last_IO_Errno: 0
  54. Last_IO_Error:
  55. Last_SQL_Errno: 0
  56. Last_SQL_Error:
  57. Replicate_Ignore_Server_Ids:
  58. Master_Server_Id: 59
  59. Master_UUID: 38c02165-005e-11ee-bd2d-525400007271
  60. Master_Info_File: mysql.slave_master_info
  61. SQL_Delay: 0
  62. SQL_Remaining_Delay: NULL
  63. Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
  64. Master_Retry_Count: 86400
  65. Master_Bind:
  66. Last_IO_Error_Timestamp:
  67. Last_SQL_Error_Timestamp:
  68. Master_SSL_Crl:
  69. Master_SSL_Crlpath:
  70. Retrieved_Gtid_Set:
  71. Executed_Gtid_Set:
  72. Auto_Position: 0
  73. Replicate_Rewrite_DB:
  74. Channel_Name:
  75. Master_TLS_Version:
  76. Master_public_key_path:
  77. Get_master_public_key: 0
  78. Network_Namespace:
  79. 1 row in set, 1 warning (0.00 sec)
  80. mysql>

主(master)数据库服务器角色

????????网站连接后用来存储数据的服务器(只有一台)

从(slave)数据库服务器角色

????????自动同步主服务器上的数据(可以有很多台)

配置mysql主从

54连接53把53上面的命令copy过去在54上执行一遍

IP 192.168.88.53 做master服务器

1.启用binlog日志文件,配置文件:/etc/my.cnf.d/mysql-server.cnf

2.用户授权

?create user repluser@"%"? identified by "123"

grant replication slave on *.*? to repluser@"%";

3.查看正在使用的binlog日志文件

主从同步的工作原理

Slave_IO_Running: yes

负责联系master 复制master主机 bnlog 日志文件里的sql命令到本机的relay-log文件里

从主服务器总mysql主机名-relay-log? 中继日志文件

Slave_SQL_Running:yes??

执行本机relay-log里的日志文件,实现与master内容一致

必须io线程和sql线程是yes

单向同步,永远是从去同步主上的内容.

排错方法

Last_IO_Error:???? IO线程报错信息

报错原因 通常是change master to 的配置项不正确

解决办法:? 重新指定主服务? stop slave? change msater to? start slave;

Last_SQL_Error:? SQL线程报错信息

通常是执行relay-log文件里的sql命令时 失败 导致的

show slave status \G

可以竖着看

配置"一主多从"结构

配置数据读写分离结构(主从同步+mycat软件实现)

IP 192.168.88.54 做clave服务器

指定server_id 并重启数据库服务,指定主服务器信息,启动slave进程,查看状态信息

show slave status

? ? ? ? 1.指定server_id (不能重复,唯一的)? 重启binlog服务器

要手动同步? 主服务器 比自己多的

在master 服务器执行完全备份? 把备份文件copy给slave主机

show master status;

]#mysqldump -B bbsdb > /root/bbsdb.sql

]# scp /root/bbsdb.sql? root@192.168.88.55/root/

在slave服务器执行 备份文件 恢复数据

mysql? <?? /rootbbsdb.sql

在slave 服务器执行? 备份文件? 恢复数据

??????? 2.指定主服务器信息

? ? ? ? 服务器的ip? 用户名? 密码??? 日志文件 偏移量

??????? 3.启动slave

??????? 4.查看状态信息

一主一从

一主多从

主从主

主主结构

主从同步

master服务器配置

??????? 1.启用binlog日志

??????? 2.创建用户并授权

??????? 3.查看正在使用的日志文件

???????

slave服务器的配置

??????? 1.指定server_id (不能重复,唯一的)? 重启binlog服务器

??????? 2.指定主服务器信息

? ? ? ? 服务器的ip? 用户名? 密码??? 日志文件 偏移量

??????? 3.启动slave

??????? 4.查看状态信息

Slave_IO_Running: yes

Slave_SQL_Running:yes

部署mysql数据读写分离结构+mycat2

理论:把客户端访问数据库服务的查询访问select 和 写访问 insert 分别给不同的数据库服务器处理.

功能:减轻单台数据库服务器的并发访问压力

如何实现数据读写分离

??????? 人肉分离?? select? ---------->?? 57

???????????????????????? insert? ----------->?? 56

??????????????????????? proxy?? ----------->?? 58

???????? 通过搭建读写分离服务实现

能够实现数据读写分离服务的软件(中间件)有哪些

mysql-proxy? mycat,mycat2(可以实现读写分离,高可用,分布式存储等功能)

环境准备:后端两台服务器一定是主从结构,配置,mysql主从结构

配置mycat服务器?? 192.168.88.58

1.安装mycat

2.修改配置

????????????????设置客户端连接mucat 服务器时? 使用的用户名和密码:定义客户端连接mycat服务使用用户及密码:

????????????????设置mycat服务启动时连接的数据库服务器

??????????????? 根据配置在本机运行mysql服务并创建plj用户

3.启动mycat

mycat服务监听的是8066端口? mysql默认访问3306端口

三.连接mycat服务配置读写分离

mysql -h127.0.0.1 -P8066? -umycat -p654321

添加数据源? 定义数据库服务器的ip地址

  • /*+ mycat:createdatasource{
  • "name":"whost56", "url":"jdbc:mysql://192.168.88.56:3306","user":"plja","password":"123456"}*/;

测试配置

mysql -h192.168.88.58 -Pmycat服务的端口? -umycat? -p654321

2.在数据服务器 上添加plja用户

3.创建集群 把57()和56()组成工作组

删除

ls /usr/local/mycat/conf/datasources/

所添加的数据源所在位置

 /*+mycat:showDataSources{}*/ \G

json命令查看数据源

 
  • /*!mycat:createcluster{
  • "name":"rwcluster",
  • "masters":["whost56"],
  • "replicas":["rhost57"]
  • }*/ ;

4. 指定数据库服务器的角色

master 角色服务器负责insert 访问

slave角色服务器负责

5.定义集群出来读访问的策略

???????????????? 集群处理查询访问的方式

支持的策略有:BALANCE_ALL? 获取集群中所有

默认的是发给所有BALANCE_ALL_READ? 获取集群中允许读数据源

BALANCE_NONE 获取集群中允许

6.创建网站存储数据使用的库,并定义? 库存储数据使用rwcluster

文章来源:https://blog.csdn.net/2301_81865838/article/details/135656181
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。