您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

mysql集群搭建(GTID模式)

时间:2021-05-20 09:19:17  来源:  作者:运维蚂蚁

1. 环境准备

1.)修改主机名

[root@MySQL-master ~]#  hostnamectl set-hostname mysql-master
[root@mysql-master ~]#  hostnamectl set-hostname mysql-slave01
[root@mysql-master ~]#  hostnamectl set-hostname mysql-slave02

2.)修改hosts文件

[root@mysql-master ~]#  vim /etc/hosts
192.168.10.231   mysql-master
192.168.10.232   mysql-slave01
192.168.10.233   mysql-slave02

3.)系统准备

[root@mysql-master ~]# yum -y install wget vim lrzsz net-tools ntp 
#修改yum源
[root@mysql-master ~]# mv /etc/yum.repos.d/centos-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
[root@mysql-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
[root@mysql-master ~]# yum clean all
[root@mysql-master ~]# yum -y update
[root@mysql-master ~]# yum -y install gcc

# 关闭 防火墙
[root@mysql-master ~]# systemctl stop firewalld
[root@mysql-master ~]# systemctl disable firewalld

# 关闭 Selinux
[root@mysql-master ~]# setenforce 0
[root@mysql-master ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

3.)准备目录【将最大的磁盘挂载到/data目录】

[root@mysql-master ~]# mkdir /data/mysql -p
[root@mysql-master ~]# mkdir /data/log/mysql/ -pv

2.mysql5.7安装

1). 安装

[root@mysql-master ~]# yum remove mysql-libs
[root@mysql-master ~]# tar -xf  mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
[root@mysql-master ~]# rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm mysql-community-libs-5.7.25-1.el7.x86_64.rpm mysql-community-client-5.7.25-1.el7.x86_64.rpm mysql-community-server-5.7.25-1.el7.x86_64.rpm mysql-community-devel-5.7.25-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
[root@mysql-master ~]# chown -R mysql:mysql /data/mysql
[root@mysql-master ~]# chown -R mysql:mysql /data/log/

2). 替换配置文件/etc/my.cnf

备注:从库请将server-id修改为大于1的整数。

[mysqld]
port = 3306
server-id = 1
datadir = /data/mysql
socket = /dev/shm/mysql.sock
pid-file = /var/run/mysqld/mysqld.pid
tmpdir = /dev/shm

innodb_buffer_pool_size = 1228M
sort_buffer_size = 16M
innodb_sort_buffer_size = 32M
join_buffer_size = 32M
key_buffer_size = 128M
read_buffer_size = 16M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
query_cache_type = 1
query_cache_size = 512M
query_cache_limit = 16M
query_cache_min_res_unit = 2k
thread_stack = 256K
tmp_table_size = 256M
max_heap_table_size = 256M
max_allowed_packet = 64M
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 2
binlog-format = ROW


# log
log-bin = mysql-master-bin
expire_logs_days = 7
slow_query_log = on
log-error = /data/log/mysql/mysqld.log
long_query_time = 2
log-queries-not-using-indexes = 1
slow_query_log_file = /data/log/mysql/mysqld01_slowquery.log

#GTID
gtid-mode = on
enforce_gtid_consistency = 1
master-info-repository = TABLE
relay-log-info-repository = TABLE
relay_log_recovery = on
sync-master-info = 1

#other
max_connections = 1000
table_open_cache = 4096
skip_name_resolve = 1
lower_case_table_names = 1
log_bin_trust_function_creators = 1

#mode
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#skip-grant-tables

3).设置开机自动启动

[root@mysql-master ~]# systemctl enable mysqld.service
[root@mysql-master ~]# systemctl start mysqld.service

4). 首次root登录

[root@mysql-master ~]# cat /data/log/mysql/mysqld.log|grep generated

[Note] A temporary password is generated for root@localhost: xxI07yii>mJt
#冒号后面后数据库的初始化密码

5). 给root修改密码

[root@mysql-master ~]# mysql -S /dev/shm/mysql.sock -uroot -p
#方法一
mysql> SET PASSWORD = PASSWORD('Mayi123@');
mysql> flush privileges;
mysql> exit;
#方法二:
mysql> update user set authentication_string=password('Mayi123@') where user='root' and host='localhost';
mysql> flush privileges;
mysql> exit;
#方法三
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mayi123@' PASSWORD EXPIRE NEVER;
mysql> flush privileges;
mysql> exit;

6). 新密码再次登录

[root@mysql-master ~]# mysql -S /dev/shm/mysql.sock -uroot -pMayi123@

3.主从设置

1).创建用于主从同步的账户

#主库执行
[root@mysql-master ~]# mysql -S /dev/shm/mysql.sock -uroot -pMayi123@
mysql> grant replication slave on *.* to 'slave'@'192.168.%.%' identified by 'Slave@0000';
mysql> flush privileges;
mysql> show master logs;
+-------------------------+-----------+
| Log_name                | File_size |
+-------------------------+-----------+
| mysql-master-bin.000001 |       177 |
| mysql-master-bin.000002 |       995 |
+-------------------------+-----------+
mysql> show binlog events in 'mysql-master-bin.000002';               #查看二进制日志中的执行命令

2).从库同步

[root@mysql-slave01 ~]# mysql -S /dev/shm/mysql.sock -uroot -pMayi123@
mysql> reset slave;
mysql> stop slave;
mysql> change master to master_host='192.168.10.231',master_port=3306,master_user='slave',master_password='Slave@0000',master_auto_position = 1;
mysql> start slave;
mysql> show slave status G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.10.231
                  Master_User: sync
                  Master_Port: 4980
                Connect_Retry: 60
              Master_Log_File: mysql-master-bin.000002
          Read_Master_Log_Pos: 995
               Relay_Log_File: mysql-slave2-relay-bin.000002
                Relay_Log_Pos: 1222
        Relay_Master_Log_File: mysql-master-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 995
              Relay_Log_Space: 1436
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: 95a3f56b-b6e4-11eb-8a6a-3a4c58bd3f13
             Master_Info_File: /data/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 95a3f56b-b6e4-11eb-8a6a-3a4c58bd3f13:1-4
            Executed_Gtid_Set: 95a3f56b-b6e4-11eb-8a6a-3a4c58bd3f13:1-4,
a00b9b71-b6e4-11eb-8a2f-f6cc164fe846:1-2
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)

2).查看集群状态

mysql> show master status;
+-------------------------+----------+--------------+------------------+------------------------------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                        |
+-------------------------+----------+--------------+------------------+------------------------------------------+
| mysql-master-bin.000002 |      995 |              |                  | 95a3f56b-b6e4-11eb-8a6a-3a4c58bd3f13:1-4 |
+-------------------------+----------+--------------+------------------+------------------------------------------+
1 row in set (0.00 sec)

mysql> show slave hosts;
+-----------+------+------+-----------+--------------------------------------+
| Server_id | Host | Port | Master_id | Slave_UUID                           |
+-----------+------+------+-----------+--------------------------------------+
|         3 |      | 4980 |         1 | a00b9b71-b6e4-11eb-8a2f-f6cc164fe846 |
|         2 |      | 4980 |         1 | 9ea77650-b6e4-11eb-8963-a6f44ead4ab1 |
+-----------+------+------+-----------+--------------------------------------+
2 rows in set (0.00 sec)

mysql> show global variables like '%gtid%';
+----------------------------------+---------------------------------------------+
| Variable_name                    | Value                                       |
+----------------------------------+---------------------------------------------+
| binlog_gtid_simple_recovery      | ON                                          |
| enforce_gtid_consistency         | ON                                          |
| gtid_executed                    | 3b8e89ca-fe36-11ea-bbba-66ef29902e35:1-2057 |
| gtid_executed_compression_period | 1000                                        |
| gtid_mode                        | ON                                          |
| gtid_owned                       |                                             |
| gtid_purged                      |                                             |
| session_track_gtids              | OFF                                         |
+----------------------------------+---------------------------------------------+
8 rows in set (0.01 sec)

4.开机自启

systemctl enable mysqld
systemctl start mysqld


Tags:mysql集群   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
集群服务部署1、配置主库映射文件 键名mysqld.cnf## The Percona Server 5.7 configuration file.### * IMPORTANT: Additional settings that can override those from...【详细内容】
2021-07-15  Tags: mysql集群  点击:(191)  评论:(0)  加入收藏
1. 环境准备1.)修改主机名[root@mysql-master ~]# hostnamectl set-hostname mysql-master[root@mysql-master ~]# hostnamectl set-hostname mysql-slave01[root@mysql-m...【详细内容】
2021-05-20  Tags: mysql集群  点击:(124)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(6)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(17)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(16)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(19)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(27)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条