MySQL 5.7.17 Group Replication搭建

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

基于组复制的强大功能在MySQL 5.7.17之后以插件的形式实现,本文讲述在单机多实例基础上搭建组复制测试环境

环境说明:

操作系统:

    CentOS Linux release 7.3.1611 (Core) 

内核版本:

    Linux version 3.10.0-514.6.2.el7.x86_64 

MySQL版本:

    mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

依赖包安装:

1
yum -y  install  gcc gcc-c++ libaio-devel boost-devel autoconf automake zlib-devel libxml2-devel ncurses-devel libgcrypt-devel libtool-devel openssl-devel bison-devel unzip numactl-devel

同时需要关闭selinux及防火墙

1
2
3
setenforce 0
systemctl stop firewalld
systemctl disabled firewalld


MySQL5.7.17安装及配置

下载解压至安装目录

1
2
3
wget http: //mirrors .sohu.com /mysql/MySQL-5 .7 /mysql-5 .7.17-linux-glibc2.5-x86_64. tar
tar  xf mysql-5.7.17-linux-glibc2.5-x86_64. tar
mv  mysql-5.7.17-linux-glibc2.5-x86_64  /usr/local/mysql5 .7.17

添加环境变量

1
2
echo  'PATH=/usr/local/mysql5.7.17/bin:$PATH' >> /etc/profile
source  /etc/profile

手动创建mysql用户

1
useradd  -s  /sbin/nologin  -d  /dev/null  mysql

添加本机主机名解析

1
echo  "127.0.0.1 $HOSTNAME" >> /etc/host


MySQL多实例:(三个实例)

我们将实例建3306、3307、3308三个实例

创建数据文件目录

1
mkdir  -p  /usr/local/mysql5 .7.17 /data/330 {6,7,8}

创建配置文件目录

1
mkdir  -p  /usr/local/mysql5 .7.17 /conf


创建配置文件

3306实例的配置文件

cat /usr/local/mysql5.7.17/conf/3306.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[mysqld]
basedir= /usr/local/mysql5 .7.17
datadir= /usr/local/mysql5 .7.17 /data/3306
port = 3306
socket = /usr/local/mysql5 .7.17 /data/3306/mysqld .sock
log-error= /usr/local/mysql5 .7.17 /data/3306/mysqld .log
user = mysql
server_id = 3306
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
#组复制基本配置
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name= "01e5fb97-be64-41f7-bafd-3afc7a6ab555"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:13306"
loose-group_replication_group_seeds= "127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308"
loose-group_replication_bootstrap_group = off
#loose-group_replication_ip_whitelist=”10.30.0.0/16,10.31.0..0/16,10.27.0.0/16″

说明:

group_replication变量使用的loose-前缀是指示Server启用时尚未加载复制插件也将继续启动

transaction_write_set_extraction = XXHASH64指示Server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列

loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"表示将加入或者创建的复制组命名为01e5fb97-be64-41f7-bafd-3afc7a6ab555,可自定义(通过cat /proc/sys/kernel/random/uuid)

loose-group_replication_start_on_boot=off 设置为Server启动时不自动启动组复制

loose-group_replication_local_address="127.0.0.1:13306" 绑定本地的127.0.0.1及13306端口接受其他组成员的连接,IP地址必须为其他组成员可正常访问

loose-group_replication_group_seeds="127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308"本行为告诉服务器当服务器加入组时,应当连接到127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308这些种子服务器进行配置。本设置可以不是全部的组成员服务地址

loose-group_replication_bootstrap_group = off 配置是否自动引导组

loose-group_replication_ip_whitelist=”10.30.0.0/16,10.31.0..0/16,10.27.0.0/16″默认情况下只允许127.0.0.1连接到复制组,如果是其他IP则需要配置。


3307实例的配置文件

cat /usr/local/mysql5.7.17/conf/3307.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[mysqld]
basedir= /usr/local/mysql5 .7.17
datadir= /usr/local/mysql5 .7.17 /data/3307
port = 3307
socket = /usr/local/mysql5 .7.17 /data/3307/mysqld .sock
log-error= /usr/local/mysql5 .7.17 /data/3307/mysqld .log
user = mysql
server_id = 3307
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name= "01e5fb97-be64-41f7-bafd-3afc7a6ab555"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:13307"
loose-group_replication_group_seeds= "127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308"
loose-group_replication_bootstrap_group = off
loose-group_replication_ip_whitelist=”10.30.0.0 /16 ,10.31.0..0 /16 ,10.27.0.0 /16


3308实例配置文件

cat /usr/local/mysql5.7.17/conf/3308.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[mysqld]
basedir= /usr/local/mysql5 .7.17
datadir= /usr/local/mysql5 .7.17 /data/3308
port = 3308
socket = /usr/local/mysql5 .7.17 /data/3308/mysqld .sock
log-error= /usr/local/mysql5 .7.17 /data/3308/mysqld .log
user = mysql
server_id = 3308
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name= "01e5fb97-be64-41f7-bafd-3afc7a6ab555"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:13308"
loose-group_replication_group_seeds= "127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308"
loose-group_replication_bootstrap_group = off
loose-group_replication_ip_whitelist=”10.30.0.0 /16 ,10.31.0..0 /16 ,10.27.0.0 /16


初始化数据库:

1
2
3
4
/usr/local/mysql5 .7.17 /bin/mysqld  --initialize-insecure --basedir= /usr/local/mysql5 .7.17 --datadir= /usr/local/mysql5 .7.17 /data/3306
/usr/local/mysql5 .7.17 /bin/mysqld  --initialize-insecure --basedir= /usr/local/mysql5 .7.17 --datadir= /usr/local/mysql5 .7.17 /data/3307
/usr/local/mysql5 .7.17 /bin/mysqld  --initialize-insecure --basedir= /usr/local/mysql5 .7.17 --datadir= /usr/local/mysql5 .7.17 /data/3308
chown  -R mysql.mysql  /usr/local/mysql5 .7.17 /data/ *


启动数据库:

1
2
3
/usr/local/mysql5 .7.17 /bin/mysqld  --defaults- file = /usr/local/mysql5 .7.17 /conf/3306 .cnf &
/usr/local/mysql5 .7.17 /bin/mysqld  --defaults- file = /usr/local/mysql5 .7.17 /conf/3307 .cnf &
/usr/local/mysql5 .7.17 /bin/mysqld  --defaults- file = /usr/local/mysql5 .7.17 /conf/3308 .cnf &


3306实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql -S /usr/ local /mysql5.7.17/data/3306/mysqld.sock
 
#创建复制用户及密码
set  sql_log_bin=0;
grant  replication slave,replication client  on  *.*  to  'repluser' @ '%'  identified  by  'replpass' ;
flush  privileges ;
set  sql_log_bin=1;
 
#设置复制用户名及密码
change master  to  master_user= 'repluser' ,master_password= 'replpass'  for  channel  'group_replication_recovery' ;
 
#安装组复制插件
install plugin group_replication soname  'group_replication.so' ;
 
#检查插件是否安装成功
show plugins;
 
#启动组复制
set  global  group_replication_bootstrap_group= ON ;
START group_replication;
set  global  group_replication_bootstrap_group= OFF ;
exit;


3307实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql -S  /usr/local/mysql5 .7.17 /data/3307/mysqld .sock
 
set  sql_log_bin=0;
grant replication slave,replication client on *.* to  'repluser' @ '%'  identified by  'replpass' ;
flush privileges;
set  sql_log_bin=1;
change master to master_user= 'repluser' ,master_password= 'replpass'  for  channel  'group_replication_recovery' ;
install  plugin group_replication soname  'group_replication.so' ;
show plugins;
 
#启动组复制
START group_replication;
 
exit ;


3308实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql -S  /usr/local/mysql5 .7.17 /data/3308/mysqld .sock
 
set  sql_log_bin=0;
grant replication slave,replication client on *.* to  'repluser' @ '%'  identified by  'replpass' ;
flush privileges;
set  sql_log_bin=1;
change master to master_user= 'repluser' ,master_password= 'replpass'  for  channel  'group_replication_recovery' ;
install  plugin group_replication soname  'group_replication.so' ;
show plugins;
 
#启动组复制
START group_replication;
 
exit


注意:3306、3307、3308启动组复制的不同

实例名 启动组复制命令
3306

set global group_replication_bootstrap_group=ON;

START group_replication;

set global group_replication_bootstrap_group=OFF;

3307 START group_replication;
3308 START group_replication;


查看组复制结果:

1
2
3
4
5
6
7
8
mysql>  select  * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 51f188a1-5626-11e7-a2f3-000c29335f88 | haproxy206  |        3306 | ONLINE       |
| group_replication_applier | 5b45cd3f-5626-11e7-a435-000c29335f88 | haproxy206  |        3307 | ONLINE       |
| group_replication_applier | 6374c473-5626-11e7-a5aa-000c29335f88 | haproxy206  |        3308 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+

可以看到MEMBER_STATE都是ONLINE,组复制配置成功



组复制测试:

1
2
3
4
5
6
7
8
9
mysql -S /usr/ local /mysql5.7.17/data/3306/mysqld.sock
mysql >  create  database  test;
mysql >  create  table  tb1 (id  int  not  null );
mysql >  insert  into  tb1  values (1);
The  table  does  not  comply  with  the requirements  by  an external plugin.
#报错,那是因为group_replication中的表必须有主键保证唯一性,否则失败。
mysql >  drop  table  tb1;
mysql >  create  table  tb1 (id  int  not  null  primary  key  auto_increment,username  varchar (300));
mysql >  insert  into  tb1  values (1, 'guest' );

在其他实例测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql -S  /usr/local/mysql5 .7.17 /data/3307/mysqld .sock
mysql>  select  * from  test .tb1;
+----+----------+
id  | username |
+----+----------+
|  1 | guest    |
+----+----------+
mysql -S  /usr/local/mysql5 .7.17 /data/3308/mysqld .sock
mysql>  select  * from  test .tb1;
+----+----------+
id  | username |
+----+----------+
|  1 | guest    |
+----+----------+
mysql> insert into  test .tb1 values(2, 'admin' );
The MySQL server is running with the --super- read -only option so it cannot execute this statement

在单主模式下,只有主机才允许写入,其他都为只读模式;


在单主模式下寻找主实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#查找主实例
mysql>  select  variable_value from performance_schema.global_status where variable_name = 'group_replication_primary_member' ;
+--------------------------------------+
| variable_value                       |
+--------------------------------------+
| 51f188a1-5626-11e7-a2f3-000c29335f88 |
+--------------------------------------+
#获取实例信息
mysql>  select  * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 51f188a1-5626-11e7-a2f3-000c29335f88 | haproxy206  |        3306 | ONLINE       |
| group_replication_applier | 5b45cd3f-5626-11e7-a435-000c29335f88 | haproxy206  |        3307 | ONLINE       |
| group_replication_applier | 6374c473-5626-11e7-a5aa-000c29335f88 | haproxy206  |        3308 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+

则可以知道haproxy206的3306端口为主实例



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
mysql> show variables like  '%group_replication%' ;
+----------------------------------------------------+-------------------------------------------------+
| Variable_name                                      | Value                                           |
+----------------------------------------------------+-------------------------------------------------+
| group_replication_allow_local_disjoint_gtids_join  | OFF                                             |
| group_replication_allow_local_lower_version_join   | OFF                                             |
| group_replication_auto_increment_increment         | 7                                               |
| group_replication_bootstrap_group                  | OFF                                             |
| group_replication_components_stop_timeout          | 31536000                                        |
| group_replication_compression_threshold            | 1000000                                         |
| group_replication_enforce_update_everywhere_checks | OFF                                              |
| group_replication_flow_control_applier_threshold   | 25000                                           |
| group_replication_flow_control_certifier_threshold | 25000                                           |
| group_replication_flow_control_mode                | QUOTA                                           |
| group_replication_force_members                    |                                                 |
| group_replication_group_name                       | 01e5fb97-be64-41f7-bafd-3afc7a6ab555            |
| group_replication_group_seeds                      | 127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308 |
| group_replication_gtid_assignment_block_size       | 1000000                                         |
| group_replication_ip_whitelist                     | AUTOMATIC                                       |
| group_replication_local_address                    | 127.0.0.1:13306                                 |
| group_replication_poll_spin_loops                  | 0                                               |
| group_replication_recovery_complete_at             | TRANSACTIONS_APPLIED                            |
| group_replication_recovery_reconnect_interval      | 60                                              |
| group_replication_recovery_retry_count             | 10                                              |
| group_replication_recovery_ssl_ca                  |                                                 |
| group_replication_recovery_ssl_capath              |                                                 |
| group_replication_recovery_ssl_cert                |                                                 |
| group_replication_recovery_ssl_cipher              |                                                 |
| group_replication_recovery_ssl_crl                 |                                                 |
| group_replication_recovery_ssl_crlpath             |                                                 |
| group_replication_recovery_ssl_key                 |                                                 |
| group_replication_recovery_ssl_verify_server_cert  | OFF                                             |
| group_replication_recovery_use_ssl                 | OFF                                             |
| group_replication_single_primary_mode              | ON                                             |
| group_replication_ssl_mode                         | DISABLED                                        |
| group_replication_start_on_boot                    | OFF                                             |
+----------------------------------------------------+-------------------------------------------------+

注意上面的

1
2
group_replication_enforce_update_everywhere_checks | OFF 
group_replication_single_primary_mode              | ON


单主模式变更为多主模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
3306实例:
mysql -S  /usr/local/mysql5 .7.17 /data/3306/mysqld .sock
STOP group_replication;
set  global group_replication_single_primary_mode=OFF;
set  global group_replication_enforce_update_everywhere_checks= ON;
set  global group_replication_bootstrap_group=ON;
START group_replication;
set  global group_replication_bootstrap_group=OFF;
 
3307实例:
mysql -S  /usr/local/mysql5 .7.17 /data/3307/mysqld .sock
STOP group_replication;
set  global group_replication_single_primary_mode=OFF;
set  global group_replication_enforce_update_everywhere_checks= ON;
START group_replication;
 
3308实例:
mysql -S  /usr/local/mysql5 .7.17 /data/3308/mysqld .sock
STOP group_replication;
set  global group_replication_single_primary_mode=OFF;
set  global group_replication_enforce_update_everywhere_checks= ON;
START group_replication;

经过以上配置后你就可以在每个实例上都进行增删改



增加节点

我们已三个成员的组复制分别为3306、3307、3308现在我们增加3309实例

mkdir -p /usr/local/mysql5.7.17/data/3309

cat /usr/local/mysql5.7.17/conf/3309.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[mysqld]
basedir= /usr/local/mysql5 .7.17
datadir= /usr/local/mysql5 .7.17 /data/3309
port = 3309
socket = /usr/local/mysql5 .7.17 /data/3309/mysqld .sock
log-error= /usr/local/mysql5 .7.17 /data/3309/mysqld .log
user = mysql
server_id = 3309
gtid_mode = ON
enforce_gtid_consistency = ON
master_info_repository = TABLE
relay_log_info_repository = TABLE
binlog_checksum = NONE
log_slave_updates = ON
log_bin = binlog
binlog_format = ROW
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name= "01e5fb97-be64-41f7-bafd-3afc7a6ab555"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "127.0.0.1:13309"
loose-group_replication_group_seeds= "127.0.0.1:13306,127.0.0.1:13307,127.0.0.1:13308"
loose-group_replication_bootstrap_group = off
#loose-group_replication_ip_whitelist=”10.30.0.0/16,10.31.0..0/16,10.27.0.0/16″

初始化数据库并启动数据库

1
2
3
/usr/local/mysql5 .7.17 /bin/mysqld  --initialize-insecure --basedir= /usr/local/mysql5 .7.17 --datadir= /usr/local/mysql5 .7.17 /data/3309
chown  -R mysql.mysql  /usr/local/mysql5 .7.17 /data/3309
/usr/local/mysql5 .7.17 /bin/mysqld  --defaults- file = /usr/local/mysql5 .7.17 /conf/3309 .cnf &


配置

1
2
3
4
5
6
7
8
9
mysql -S  /usr/local/mysql5 .7.17 /data/3309/mysqld .sock
set  sql_log_bin=0;
grant replication slave,replication client on *.* to  'repluser' @ '%'  identified by  'replpass' ;
flush privileges;
set  sql_log_bin=1;
change master to master_user= 'repluser' ,master_password= 'replpass'  for  channel  'group_replication_recovery' ;
install  plugin group_replication soname  'group_replication.so' ;
show plugins;
START group_replication;


查看组成员

1
2
3
4
5
6
7
8
9
mysql>  select  * from performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | 51f188a1-5626-11e7-a2f3-000c29335f88 | haproxy206  |        3306 | ONLINE       |
| group_replication_applier | 5b45cd3f-5626-11e7-a435-000c29335f88 | haproxy206  |        3307 | ONLINE       |
| group_replication_applier | 6374c473-5626-11e7-a5aa-000c29335f88 | haproxy206  |        3308 | ONLINE       |
| group_replication_applier | b19bea84-5629-11e7-8b05-000c29335f88 | haproxy206  |        3309 | ONLINE       |
+---------------------------+--------------------------------------+-------------+-------------+--------------+

如果数据量大的话,3309的状态可能为recovering



问题处理:

2017-06-21T15:06:01.854288+08:00 0 [Warning] Plugin group_replication reported: ‘[GCS] Connection attempt from IP address 192.168.0.2 refused. Address is not in the IP whitelist.’

原因:group_replication_ip_whitelist默认值为127.0.0.1/8,设置为需要的配置

处理:set global group_replication_ip_whitelist='192.168.0.0/24'  (多个网段使用逗号隔开)


Slave I/O for channel 'group_replication_recovery': Fatal error: Invalid (empty) username when attempting to connect to the master server. Connection attempt terminated. Error_code: 1593

原因:没有配置同步账号跟密码,使用的是空密码进行同步。 需要为复制通道group_replication_recovery 设置同步信息,一定要注意同步通道group_replication_recovery

处理:change master to master_user='repluser',master_password='replpass' for channel 'group_replication_recovery';



本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1940597


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
MySQL GROUP BY 语句
MySQL GROUP BY 语句
|
5月前
|
SQL 关系型数据库 MySQL
MySQL5.7 group by新特性报错1055的解决办法
MySQL5.7 group by新特性报错1055的解决办法
|
7月前
|
关系型数据库 MySQL 数据库
MySql group by 分组
MySql group by 分组
25 0
|
12天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
1月前
|
SQL 关系型数据库 MySQL
923.【mysql】 only full group by 模式
923.【mysql】 only full group by 模式
20 1
|
2月前
|
监控 负载均衡 关系型数据库
MySQL技能完整学习列表13、MySQL高级特性——1、分区表(Partitioning)——2、复制(Replication)——3、集群(Clustering)
MySQL技能完整学习列表13、MySQL高级特性——1、分区表(Partitioning)——2、复制(Replication)——3、集群(Clustering)
51 0
|
3月前
|
关系型数据库 MySQL Java
MySQL group by分组后,将每组所得到的id拼接起来
MySQL group by分组后,将每组所得到的id拼接起来
33 0
|
4月前
|
关系型数据库 MySQL 数据库
Mysql-错误处理: Found option without preceding group in config file
Mysql-错误处理: Found option without preceding group in config file
140 0
|
4月前
|
SQL 算法 关系型数据库
MySQL查询优化之order by 、 group by与分页查询优化
MySQL查询优化之order by 、 group by与分页查询优化
54 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL中group by子句与having实例分析
MySQL中group by子句与having实例分析
43 0

推荐镜像

更多