The MySQL™ software delivers a very fast, multithreaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software.
- MySQL运维笔记
- Linux运维菜 - MySQL
- mysql中的慢查询日志
- 慢查询日志分析工具(mysqldumpslow)
- 使用Show Profile进行分析
- 值75亿美金的GitHub都不用分布式,你的数据库也不需要
apt update && apt install mysql-server
- CentOS 7 安装 Mysql5.5 或自定义版本 RPM 方式
- Install MySQL on CentOS 7 Operating System
- centos7 MySQL 数据库安装和配置
- 下载 mysql 的 repo 源,安装 mysql-community-release
wget https://dev.mysql.com/get/mysql57-community-release-el7.rpm
rpm -ivh mysql57-community-release-el7.rpm && yum install mysql-server
- 启动/停止/重启
service mysqld start/stop/restart
- 关闭强密码验证
vi /etc/my.cnf
添加validate-password=OFF
至末尾,如已开启需重启 - 获取临时密码
grep "temporary password" /var/log/mysqld.log
- 连接
mysql -uroot -p
修改密码,并允许远程连接use mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'XXX_NEW_PASSWORD'; update user set host = '%' where user = 'root'; flush privileges;
- 使用 firewall-cmd 开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
- As a service
- RPM package platforms
service mysql {start|stop|restart|status}
- Debian package platforms
systemctl {start|stop|restart|status} mysqld
- RPM package platforms
- Command line
- Run
mysqld/mysqld_safe &
- Stop
mysqladmin -uroot -p shutdown
- Run
- interactive_timeout 和 wait_timeout
- 开启binlog:配置文件中设置
log-bin=mysql-bin
- 查找配置文件路径
mysqld --verbose --help |grep -A 1 'Default options'
- 创建用户:
CREATE USER 'user'@'host' IDENTIFIED BY 'pwd'; CREATE USER 'user'@'%' IDENTIFIED BY 'pwd'; -- 全部主机 CREATE USER 'user'@'localhost' IDENTIFIED BY 'pwd'; -- 本地登陆 CREATE USER 'user'@'192.168.1.101' IDENTIFIED BY 'pwd'; -- 指定主机
- 删除用户:
DROP USER 'user'@'%'; DROP USER 'user'@'host';
- 修改密码:
$ mysql -u root
use mysql; SET PASSWORD = PASSWORD('pwd'); -- 修改当前登陆用户密码 update user set plugin="mysql_native_password"; -- mysql5.7+ required update user set authentication_string=password('pwd') where user='root'; flush privileges;
- 使用
mysqladmin
修改密码:$ mysqladmin -u root password -p
- 权限列表:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html
- 查询权限:
show grants for root@'localhost';
- 修改数据库权限
-- 全部权限 GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pwd'; -- 该用户可以给其他用户授权 GRANT privileges ON db.tbl TO 'user'@'host' IDENTIFIED BY 'pwd' WITH GRANT OPTION; -- 特定权限 GRANT SELECT,UPDATE,INSERT,DELETE ON testdb.* TO 'user'@'host' IDENTIFIED BY 'pwd';
- 取消权限
REVOKE privilege ON databasename.tablename FROM 'user'@'host'; REVOKE SELECT ON testdb.* FROM 'user'@'localhost';
- 允许远程访问
use mysql; update user set host = '%' where user = 'XXX';
- ⭐以上均需刷新生效:
flush privileges;
- MySQL 性能优化总结
- MySQL Optimal Configuration Template
- MySQL 5.7 Performance Tuning After Installation - zh-CN
- 为什么你要用 InnoDB, 而不是 MyISAM ?
- MyISAM 和 InnoDB 区别和应用场景
- MyISAM
- 读取性能极佳
- 不支持行锁(只有表锁),不支持事务,不支持外键,不支持崩溃后的安全恢复
- 不推荐使用(除非需执行大量 SELECT 查询)
- InnoDB
- 支持行锁,采用 MVCC 来支持高并发,但有可能死锁;
- 支持事务;支持外键;支持崩溃后的安全恢复;支持全文索引(MySQL 5.6+)
- 推荐使用(MySQL 5.5+ 默认)
- MySQL Performance: InnoDB Buffers & Directives
- What is a big innodb_log_file_size?
- 优化 MySQL:3 个简单的小调整 —— 调整关键配置(20%),可得到 80% 性能提升,:star:Pareto principle
- 所有表使用 innodb 引擎
- 加大
innodb_buffer_pool_size
,最大可使用物理机器的 70% - 设置
innodb_buffer_pool_instances
来分割innodb_buffer_pool_size
,以提高并发性
- MySQL性能调优 – 你必须了解的15个重要变量
innodb_buffer_pool_size
最重要
- MySQL Innodb 并发涉及参数
- 当并发用户线程数量小于 64,建议设置
innodb_thread_concurrency=0
(保持默认不变)
- 当并发用户线程数量小于 64,建议设置
- Config example:
# Ubuntu18.04LTS, CPU16核心, 32G内存为例,同时运行其他业务 # vi /etc/mysql/mysql.conf.d/mysqld.cnf max_allowed_packet = 256M max_connections = 1024 wait_timeout = 600 # 慢查询日志 slow_query_log = 1 # default is /var/lib/mysql/xxx-slow.log slow_query_log_file = /var/log/mysql/mysql-slow.log log_queries_not_using_indexes = 1 log_timestamps = system # InnoDB 相关 innodb_buffer_pool_size = 16G innodb_buffer_pool_instances = 8 innodb_read_io_threads = 10 innodb_write_io_threads = 6 innodb_log_file_size = 2G
-
apt install libjemalloc-dev
/apt install google-perftools
mkdir -p /etc/systemd/system/mysql.service.d
/systemctl edit mysql
vi /etc/systemd/system/mysql.service.d/override.conf
[Service] Environment="LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so" # OR Environment="LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libtcmalloc.so.4"
systemctl daemon-reload
service mysql restart
-
How to check the memory allocator used by my mysql 5.7.20
lsof -p $(pidof mysqld) | grep mem
lsof -n |grep jemalloc
-
Compile and install jemalloc ❌ Not recommend!
View details
- 安装 jemalloc for mysql
git clone https://github.com/jemalloc/jemalloc
cd jemalloc & git checkout master
./autogen.sh && ./configure && make && make install
cp /usr/local/lib/libjemalloc.* /usr/lib/
- run mysqld with jemalloc
export LD_PRELOAD=/usr/lib/libjemalloc.so && mysqld &
- FAQ
mkdir /var/run/mysqld && chown mysql:mysql /var/run/mysqld
- Percona XtraBackup 2.4 Documentation
- Percona XtraBackup is a set of following tools:
innobackupex
is the symlink for xtrabackup. innobackupex still supports all features and syntax as 2.2 version did, but is now deprecated and will be removed in next major release.xtrabackup
a compiled C binary that provides functionality to backup a whole MySQL database instance with MyISAM, InnoDB, and XtraDB tables.xbcrypt
utility used for encrypting and decrypting backup files.xbstream
utility that allows streaming and extracting files to/from the xbstream format.xbcloud
utility used for downloading and uploading full or part of xbstream archive from/to cloud.- After Percona XtraBackup 2.3 release the recommend way to take the backup is using the xtrabackup script. More information on script options can be found in how to use xtrabackup.
- xtrabackup 备份 - 原理与应用
- 热备工具 Xtrabackup 简介
- 使用 percona xtraback 实施物理备份
- Xtrabackup 备份还原
- Xtrabackup 备份和恢复应用, shell 自动化
- 从 Xtrabackup 完整备份中恢复单个表
- innobackupex - DEPRECATED
- 搭建 MySQL 5.7.19 主从复制,以及复制实现细节分析
- MySQL 5.7 基于 GTID 的主从复制实践
- MySQL 主从备份配置
- MySQL 主从复制架构使用方法、
- MySQL 主从复制——主库已有数据的解决方案
- 3 分钟解决 MySQL 1032 主从错误
- mycli: A command line client for MySQL that can do auto-completion and syntax highlighting.
- phpMyAdmin: A web interface for MySQL and MariaDB.
- Sequel Ace is the "sequel" to longtime macOS tool Sequel Pro. Sequel Ace is a fast, easy-to-use Mac database management application for working with MySQL & MariaDB databases.
- Querious: THE BEST MYSQL TOOL FOR MACOS
- See also: database tools
- Lost connection to MySQL server at 'reading initial communication packet
- Ubuntu 开启 mysql 远程连接
vi /etc/mysql/mysql.conf.d/mysqld.cnf #bind-address = 127.0.0.1 service mysql restart
- Cenos7 MySQL ERROR 1044 (42000):Access denied for user ''@'localhost' to databa...
- ERROR 1698 (28000): Access denied for user 'root'@'localhost' at Ubuntu 18.04
- Change user password in MySQL 5.7 with “plugin: auth_socket”
- If you install 5.7 and don’t provide a password to the root user, it will use the auth_socket plugin.
- [Resolved] When I faced “#1273 – Unknown collation: ‘utf8mb4_0900_ai_ci'” Error
utf8mb4_0900_ai_ci
-->utf8mb4_general_ci
.
- Truncate Slow Query Log in MySQL
> /var/lib/mysql/XXX-slow.log
- Did your logging stop working after you set up logrotate? Then this post might be for you.
- MySQL 获取行数
mysql -h$MYHOST -P$MYPORT -u$MYUSER -p$MYPWD -N -e "SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$DBNAME'"
- awesome-mysql: A curated list of awesome MySQL software, libraries, tools and resources
- MySQL 资源大全中文版,分析工具、备份、性能测试、配置、部署、GUI 等