
MySQL
MySQL数据库
姚远ACE
Oracle ACE,华为云 MVP,Oracle10g,12c OCM; MySQL 5.6,5.7,8.0 OCP;CCNA; EMC Certified; IBM P Certified; RHCE; SQLServer 764; DB2 Certified; TOEIC 890;获得过两次国家部级科技进步奖;发明过两项计算机专利。微信:yaoyuanace 邮箱:yaoyuanace(at)qq.com
-
原创 MySQL部分权限回收功能(Partial Revokes)的使用---发表在爱可生开源社区
部分权限回收功能的说明MySQL数据库对于对象的操作级别分为:全局、数据库、表、字段等。粒度从粗到细。如果粗的粒度的权限满足了,将不再检验细粒度的级别,这种验证方式有的时候不方便,例如需要把100个数据库中除了某一个数据库外的访问权限赋予某个用户,需要进行99次赋权。从MySQL 8.0.16开始,MySQL推出了一种部分权限回收(Partial Revokes)的功能,可以将粗粒度赋予的权限在细粒度上回收。使用部分权限回收功能要使用这个功能需要将系统参数partial_revokes设置成on,这个2021-02-08 14:32:2069
0
-
原创 MYSQL工具集rpm安装在MYSQL 8里的bug:ImportError: No module named utilities.command.binlog_admin
出现故障[root@redhat7 ~]# mysqlbinlogmove --helpTraceback (most recent call last): File "/usr/bin/mysqlbinlogmove", line 26, in <module> import mysql.utilities.command.binlog_admin as binlog_adminImportError: No module named utilities.command.bi2021-01-27 14:18:2221
0
-
原创 SELinux与MySQL--发表在爱可生开源社区
为了提高Linux系统的安全性,在 Linux 上通常会使用 SELinux 或 AppArmor 实现强制访问控制(Mandatory Access Control MAC)。对于MySQL数据库的强制访问控制策略通常是激活的,如果用户采用默认的配置,并不会感到强制访问控制策略对MySQL数据库的影响,一旦用户修改了MySQL数据库的默认配置,例如数据目录或默认端口,MySQL数据库的活动就会被 SELinux 或 AppArmor阻止,数据库无法启动,本文简单介绍SELinux对MySQL数据库的影响2021-01-10 20:23:59250
0
-
原创 Percona Server for MySQL和MySQL的对比和安装
文章目录Percona Server for MySQL和MySQL的对比Percona Server for MySQL和MySQL的关系Percona Server for MySQL的增强安装Percona Server for MySQL 8检查是否安装了MySQL和MariaDB下载软件运行Percona Server for MySQL数据库的初始化Percona Server for MySQL和MySQL的对比MySQL有很多分支,其中Percona Server for MySQL是2020-12-22 11:05:5661
0
-
原创 从输入任何密码都可以直接登录 MySQL 的 root 用户谈 auth_socket 验证插件---发表到爱可生开源社区
文章目录现象分析问题解决auth_socket 验证插件的使用场景现象一线的工程师反映了一个奇怪的现象,刚刚从 MySQL 官网上下载了一个 MySQL 5.7.31,安装完成后,发现使用任何密码都能登陆 MySQL,修改密码也不管用,重新启动 MySQL 也不能解决。分析怀疑使用了 --skip-grant-tables, 使用 mysqld --print-defaults 检查,没有发现。检查登陆用户,都是 root@localhost,说明和 proxy user 没有关系。mysql&2020-11-23 16:46:01267
0
-
原创 MySQL 启动失败的常见原因---发表到爱可生开源社区
mysql启动失败的常见原因无法访问系统资源参数设置错误参数设置错误造成mysql无法启动的原因也非常常见,此时先要检查mysql启动时会调用的参数,使用下面的命令显示 mysqld 程序将要调用的参数:$ mysqld --print-defaults/usr/sbin/mysqld would have been started with the following arguments:......注意这个命令显示完参数后就退出,不会真正运行 mysqld。这个命令和 my_print_2020-11-12 15:56:401248
0
-
原创 Back You Up 公开课第15期 | MySQL 数据库最常见的6类故障排除方法
https://mp.weixin.qq.com/s/nghnDiNnIql-PiJVkZF9cw2020-11-12 15:41:2084
0
-
原创 MySQL 打开文件失败问题的解决
MySQL 打开文件失败相关的错误主要有如下 3 种:shell> perror 23OS error code 23: File table overflowshell> perror 24OS error code 24: Too many open filesshell> perror 11OS error code 11: Resource temporarily unavailable这些错误通常是因为不能为 MySQL 分配足够多的文件描述符造成的。2020-11-02 10:18:32153
0
-
原创 MySQL 数据库崩溃(crash)的常见原因和解决办法---发表到 《数据和云》 公众号
文章目录检查mysql数据库的启动时间检查mysql服务状态检查mysql中的uptime状态使用ps检查进程启动时间检查mysql日志MySQL 数据库 crash的常见原因mysql的bug检查mysql数据库的启动时间linux系统中的systemd会在mysqld进程crash后自动重新启动mysql的服务,需要注意的是使用kill -9杀死mysqld进程系统会自动重新启动,而只使用kill命令则不会重新启动,因为执行kill命令,系统会发送一个SIGTERM信号给mysqld,mysql数据2020-10-28 11:08:46780
2
-
原创 mysql 数据库无法启动(Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint .... and)
数据库机器的CPU和主板都换了,重新开机,发现mysql数据库无法启动!Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint .... and ...这个问题出现在mysql 5.7之后的版本,主要的原因是mysql会在最新的checkpoint完成后都会在redo log写一个一字节的MLOG_CHECKPOINT 标记,用来标记在此之前的redo都已checkpoint完成。如果处于任何原因没有找2020-10-01 09:47:52991
0
-
原创 ERROR! MariaDB is running but PID file could not be found
在CentOS7.6上安装了MariaDB10.3,采用的yum方式安装的,用命令查看数据库的状态会报错误[root@centos7 ~]# service mysql status ERROR! MariaDB is running but PID file could not be found在配置文件/etc/my.cnf中增加一行,pid_file=/var/lib/mysql/centos7.pid然后在查询mysql的状态,正常![root@centos7 ~]# service m2020-09-07 10:57:34185
0
-
原创 迁移MariaDB审计插件(Audit Plugin)到MySQL 5.7---发表到爱可生开源社区
https://mariadb.com/kb/en/mariadb-audit-plugin-log-settings/https://mariadb.com/kb/en/mariadb-audit-plugin-log-settings/2020-08-20 11:27:4582
0
-
原创 使用Python解析并“篡改”MySQL的Binlog---发表到爱可生开源社区
文章目录前言Binlog的结构恢复误删除的记录找出 Binlog 中的大事务切割 Binlog 中的大事务后记前言MySQL 的 Binlog 记录着 MySQL 数据库的所有变更信息,了解 Binlog 的结构可以帮助我们解析Binlog,甚至对 Binlog 进行一些修改,或者说是“篡改”,例如实现类似于 Oracle 的 flashback 的功能,恢复误删除的记录,把 update 的记录再还原回去等。本文将带您探讨一下这些神奇功能的实现,您会发现比您想象地要简单得多。本文指的 Binlog 是2020-09-28 16:21:331693
7
-
原创 MySQL的explain解释SQL执行计划,优化SQL执行和创建索引
mysql> explain select count(*) from orders o , customer c where o.o_c_id=c.c_id and c_last='BARBARBAR' and c_first='YaWRXwdLu3Sq1';+----+-------------+-------+------------+-------+---------------+--------------+---------+------+----------+----------+-2020-06-12 15:37:2589
0
-
原创 MySQL Enterprise Backup使用简介
文章目录下载和安装下载和安装需要到Oracle的edelivery网站上下载:选择平台安装root@scutech:/home/scutech# dpkg -i meb-4.1.3-ubuntu18.04-x86-64bit.deb Selecting previously unselected package meb.(Reading database ... 166554 f...2020-02-18 20:49:421080
0
-
原创 MySQL 8 新参数innodb_dedicated_server的作用,多了64个日志文件ib_logfile
文章目录参数 innodb_dedicated_server说明设置效果注意事项参数 innodb_dedicated_server说明MySQL 8 中可以设置参数 innodb_dedicated_server=ON来让MySQL自动探测服务器的内存大小,根据内存大小设置innodb_buffer_pool_size, innodb_log_file_size 和 innodb_flush...2020-03-14 11:48:39203
0
-
原创 MySQL 8 OCP备考1Z0-908--启动篇--不急于求成、不懈怠
开始准备MYSQL 8 OCP的考试,网上直播我的备考笔记,考试大纲见:https://education.oracle.com/mysql-80-database-administrator/pexam_1Z0-908一个topic一个topic的开始学习,每学习一个topic写一篇blog,让网友监督自己,同时分享知识。ArchitectureConfigure client connections to the serverUnderstand how MySQL stores dataU2020-05-16 17:06:48690
0
-
原创 MySQL 8 OCP备考--Configure client connections to the server
客户端到mysqld的连接层通过多种通信协议:TCP/IPUNIX 套接字共享内存命名管道其中TCP/IP 适用于整个网络。其它3种链接方式仅支持本地连接,也据是客户机和服务器在同一台计算机上运行时。每个连接对应一个线程。此线程处理查询执行。在某个连接可以开始发送 SQL 查询之前,将会通过验证用户名 + 口令 + 客户机主机来对该连接进行验证。通信协议一览表协议连接类型支持的操作系统TCP/IP本地、远程所有UNIX套接字文件仅本地UNIX/LINUX2020-05-16 17:07:28187
0
-
原创 MySQL 8 OCP备考--Understand how InnoDB stores data and logs
InnoDB的架构:这个是mysql官方文档上的一个InnoDB的架构图:Innodb的表.frm 无论在 MySQL 中选择了哪个存储引擎,所有的 MySQL 表都会在硬盘上创建一个 .frm 文件用来描述表的格式或者说定义; .frm 文件的格式在不同的平台上都是相同的。.ibd 文件InnoDB 中用于存储数据的文件总共有两个部分,一是系统表空间文件,包括 ibdata1、 ibdata2 等文件,其中存储了 InnoDB 系统信息和用户数据库表数据和索引,是所有表公用的。当打开 inn2020-05-16 17:07:52155
0
-
原创 MySQL 8 内存的使用
文章目录MySQL内存分配全局共享内存innodb_buffer_pool_sizeinnodb_change_bufferinginnodb_change_buffer_max_sizeinnodb_log_buffer_sizethread_cache_sizetable_open_cachetable_definition_cachekey_buffer_sizemax_connections线程/会话/连接独享内存binlog_cache_sizetmp_table_size和max_heap_ta2020-05-16 19:43:06308
0
-
原创 MySQL 8 中新增的资源管理特性---发表到3306pai社区
资源管理MySQL 8 开始支持使用资源组控制系统CPU资源的分配,将服务器内运行的线程分配给特定组,以便线程根据组可用的资源执行。组属性可以控制其资源,包括VCPU的个数和线程的优先级。DBA可以根据不同的工作负载修改这些属性。默认情况下,有一个系统组和一个用户组,分别名为SYS_default和 USR_default。无法删除这些默认组,并且无法修改其属性。每个默认组都没有CPU关联,优先级为0。资源组属性每个组都有一个名字。资源组名称是表和列名称之类的标识符。组名称不区分大小写,最长可达642020-05-21 13:59:22107
0
-
原创 MySQL 8 OCP备考--MySQL的参数log_bin_trust_function_creators和binlog的关系真绕呀!
mysql官方文档对这个参数的解释是:log_bin_trust_function_creatorsProperty ValueCommand-Line Format --log-bin-trust-function-creatorsSystem Variable log_bin_trust_function_creatorsScope GlobalDynamic YesType BooleanDefault Value FALSEThis variable applies when b2020-05-25 11:58:03186
0
-
原创 MySQL 8中新增的轻量级备份锁lock instance for backup---发表到爱可生开源社区
mysql 8中新增了一个轻量级的备份锁,它允许在online备份的时候进行DML操作,同时可防止快照不一致。备份锁由lock instance for backup和语法支持。使用这些语句需要BACKUP_ADMIN权限。从图里面看长查询对flush tables with read lock对是有影响的,整个系统会hung住,这时其它是数据库查询也不能用,包括use database。可以看到大家都在等这个锁释放。而lock instance for backup则没有这个问题。oracle自己2020-05-27 11:57:49250
0
-
原创 MySQL企业版工具——使用MySQL Enterprise Monitor监控MySQL数据库和主机---发表到爱可生开源社区
MySQL在企业版里的有个工具MySQL Enterprise Monitor,可以监控MySQL实例和主机性能。现实验如下:安装下载到https://edelivery.oracle.com/ 网站下软件:安装2020-06-09 19:28:32658
2
-
原创 MySQL忘记root密码的两种解决方法,skip-grant-tables和init-file
如果忘记了MySQL的root用户密码有两种解决方案。在启动mysqld的时候加上参数skip-grant-tables加入的方法可以是在命令行加入,类似:mysqld_safe —skip-grant-tables &或者修改启动的参数文件,如:/etc/my.cnf或者 /etc/mysql/mysql.cnf ,在[mysqld]下面加上skip-grant-tablesroot@infokist:/etc/mysql# service mysql restartroot@infok2020-06-10 13:52:45217
0
-
原创 MySQL 执行计划explain for connection的坑(ERROR 3012 (HY000))
MySQL 执行计划explain for connection是个非常有用的功能,我们可以通过这个命令查看正在执行的SQL的执行计划,对于检查一些执行时间长的SQL非常有用,这个命令的语法是:EXPLAIN [options] FOR CONNECTION connection_id;connection_id是需要被解释的连接的ID。这个id可以通过show processlist或者在连接里面输入SELECT CONNECTION_ID()来查看。但这个功能却有两个常见的坑。一个是不能检查没2020-06-11 15:38:06209
0
-
原创 relay_log_recovery和slave从库crash recovery的关系
文章目录参数设置当relay_log_recovery不设置或者设置为off时当relay_log_recovery设置为1时参数设置在从库中将relay_log_recovery不设置或者设置为off,如果当从库意外宕机后,同时从库的relay log也一起损坏了,从库会丢失那些没有应用的日志,主从会不一致。在从库中将relay_log_recovery设置为on,假如果碰到上面的情形,从库会自动放弃所有未执行的relay log,重新生成一个relay log,并将从库的io线程的position2020-07-07 18:17:2993
0
-
原创 MySQL 8 管理端口admin_port默认是33062
管理端口admin_address: 用于指定管理员发起tcp连接的主机地址,可以是ipv4,ipv6, 或者Host name等等,但只能接受一个ip地址admin_port: 是管理员用来连接的端口号,注意如果admin_address没有设置的话,这个端口号是无效的create_admin_listener_thread: 是否创建一个单独的listener线程来监听admin的链接请求,默认值是关闭的,即会使用已有的监听线程去监听admin连接。该参数同样需要admin_address打开,2020-06-12 17:46:48694
0
-
原创 MySQL 8 全局变量的修改持久化 set persist
全局变量的修改持久化在8之前的版本中,对于全局变量的修改,其只会影响其内存值,而不会持久化到配置文件中。数据库重启,又会恢复成修改前的值。从8开始,可通过SET PERSIST命令将全局变量的修改持久化到配置文件中。修改持久化mysql> show variables like '%max_connections%';+------------------------+-------+| Variable_name | Value |+------------------2020-06-12 17:48:26506
0
-
原创 MySQL 8 不可见索引 invisible index
不可见索引创建不可见索引CREATE TABLE `t1` ( `id` int(11) NOT NULL, `name` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_name` (`name`) /*!80000 INVISIBLE */) ;create index idx_t1 on t1(name) invisible;不可见索引的常见操作create table t1(id int primary2020-06-12 17:50:0490
0
-
原创 MySQL 8 默认身份验证插件caching_sha2_password
默认身份验证插件caching_sha2_password在MySQL 8里面的默认身份验证插件已经从mysql_native_password变成了caching_sha2_password。root@da2ac5ce6f38:/# mysql -uroot -pdingjia --protocol=tcp -hmysql80Warning: Using a password on the command line interface can be insecure.ERROR 2059 (HY2020-06-12 17:55:14129
0
-
原创 MySQL 8 默认字符集改成utf8mb4
mysql> show variables like '%charac%';+--------------------------+--------------------------------+| Variable_name | Value |+--------------------------+--------------------------------+| character_set_client |2020-06-15 11:47:39551
0
-
原创 MySQL 8 默认的数据库表中的引擎都是InnoDB
查看mysql> select distinct(ENGINE) from information_schema.tables;+--------------------+| ENGINE |+--------------------+| NULL || InnoDB || CSV || PERFORMANCE_SCHEMA |+--------------------+4 r2020-06-15 11:48:48324
0
-
原创 把log_error_verbosity设置为3,调试连接问题ERROR 2003 (HY000):ERROR 1045 (28000):
mysql 8里面使用global log_error_verbosity控制日志记录的详细程度:Permitted Message Prioritieslog_error_verbosity ValueERROR1ERROR, WARNING2ERROR, WARNING, INFORMATION3默认为2,设置为3,可以用于调试连接问题,这个参数可以联机设置:mysql> set global log_error_verbosity=3;Quer2020-06-15 15:46:49214
0
-
原创 mysql_config_editor 设置密码set --login_path
mysql_config_editor可以给指定的连接和密码生成一个加密文件.mylogin.cnf,默认位于当前用户家目录下。mysql、mysqladmin等可以使用该文件直接登录,避免明文密码出现在脚本中。如果没有指定 --login-path, mysql_config_editor 默认读 client login pathscutech@scutech:~$ mysql_config_editor set --login_path=client --host=localhost --us2020-06-15 17:57:07201
1
-
原创 bind-address如果是127.0.0.1,mysql只接受localhost,不接受远程连接。
bind-address如果是127.0.0.1,mysql只接受localhost,不接受远程连接。在bind-address后面增加远程访问IP地址或者禁掉这句话就可以让远程机登陆访问了。在配置文件里面加入bind-address = 127.0.0.1,然后重新启动,可以看到下面监听地址的变化。root@scutech:~# netstat -plunt|grep 3306tcp 0 0 127.0.0.1:33062 0.0.0.0:*2020-06-15 20:05:16485
0
-
原创 MySQL8 的加密 Data-at-Rest Encryption ERROR 3185 (HY000):
MySQL 5.7.11引入了InnoDB表空间加密,该加密启用了对每表文件表空间的支持。在MySQL 8.0.13中, 引入了通用表空间的加密。为了提高加密处理的可用性,MySQL 8.0.16添加了几个功能,这些功能允许数据库管理员进行更精细的控制。加载加密插件:mysql> install plugin keyring_file soname 'keyring_file.so';Query OK, 0 rows affected (0.26 sec)mysql> CREATE2020-06-17 13:20:35214
0
-
原创 mysqldump 中参数 --set-gtid-purged 控制 SET @@GLOBAL.GTID_PURGED和 SET @@SESSION.SQL_LOG_BIN
mysqldump --master-data=1 --single-transaction --databases test没有加set-gtid-purged时出现警告提示:scutech@scutech:/tmp$ mysqldump --master-data=1 --single-transaction --databases test >aa.sqlWarning: A partial dump from a server that has GTIDs will by d2020-06-17 19:30:48531
0
-
原创 mysql服务启动失败 [MY-010091] mysqld: File /binlog.index not found selinux
启动mysql服务失败,提示:[root@localhost ~]# service mysqld restartRedirecting to /bin/systemctl restart mysqld.servicemysqld: File './binlog.index' not found (OS errno 13 - Permission denied)2020-06-22T03:05:07.975321Z 0 [Warning] [MY-010091] [Server] Can't cre2020-06-22 11:14:241825
0
-
原创 修改innodb_buffer_pool_instances解决mysqlbinlog恢复慢的问题
一个客户的mysql数据库恢复在最后一步是滚binlog,结果恢复特别慢,CPU占用率100%,磁盘IO几乎是零,show processlist发现线程在sleep。从general log里面看不到任何动静,似乎找不到解决的办法。登录上去用strace分析mysqld进程发现:全部在进行内存分配。分析mysqld的参数,发现一个参数innodb_buffer_pool_instances 被设置为64,很是可疑,就是innodb_buffer_pool被分成了64个单位,而innodb_buffe2020-06-23 14:27:47358
0