Menu Close

在CentOS7.9上使用YUM安装MariaDB

1. MariaDB版本及YUM源配置

1)MariaDB的版本为:10.5

2)系统及版本选择见官方说明:
https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna
我们的服务器是CentOS7.9 x86_64架构。

2)创建YUM源文件:vim /etc/yum.repos.d/MariaDB.repo,增加如下内容:

# MariaDB 10.5 CentOS repository list - created 2021-02-25 03:04 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

3) 由于国外的YUM源下载速度较慢,可以使用国内的YUM源,具体见
http://mirrors.ustc.edu.cn/help/mariadb.html#fedora-centos-red-hat
更新YUM源内容见文档“使用说明”部分,更改后的YUM源为:

[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.5/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

2. 安装MariaDB

1)执行以下YUM命令进行MariaDB的安装:

yum install MariaDB-server MariaDB-client

2)启动MariaDB

#启动服务
systemctl start mariadb
#设置开机启动
systemctl enable mariadb
#重新启动
systemctl restart mariadb
#停止MariaDB
systemctl stop mariadb

3. 配置MariaDB

3.1. 登录到数据库

执行命令:mysql -uroot -p
登录到MariaDB,此时root账户的密码为空,直接回车即可,退出Mariadb,exit;即可。

3.2. 查看mariadb的版本

MariaDB [(none)]> select version();
MariaDB [(none)]> SHOW VARIABLES LIKE 'VERSION';


这里MariaDB的小版本为:10.5.9

3.3. 数据库默认存储引擎

安装后的MariaDB默认使用InnoDB存储引擎。
存储引擎说白了就是如何管理数据库中的数据在磁盘上的存储文件。InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持事务处理,支持外键,支持崩溃修复能力和并发控制。

InnoDB引擎特点:

  - 行级锁
  - 支持事务,适合处理大量短期事务
  - 读写阻塞与事务隔离级别相关
  - 可缓存数据和索引
  - 支持聚簇索引
  - 崩溃恢复性更好
  - 支持MVCC高并发
  - 从MySQL5.5后支持全文索引
  - 从MySQL5.5.5开始为默认的数据库引擎

InnoDB数据库文件:

  - 所有InnoDB表的数据和索引放置于同一个表空间中
    表空间文件:datadir定义的目录下
    数据文件:ibddata1, ibddata2, ...
  - 每个表单独使用一个表空间存储表的数据和索引
    启用:innodb_file_per_table=ON
    InnoDB系统变量链接:https://mariadb.com/kb/en/library/xtradbinnodb-server-system-variables/#innodb_file_per_tableON (>= MariaDB 5.5)
    两类文件放在数据库独立目录中
      数据文件(存储数据和索引):tb_name.ibd
      表格式定义:tb_name.frm

查看数据库支持的引擎与默认使用的引擎:

--查看数据库支持的存储引擎
MariaDB [(none)]> show engines;
--查看数据库默认的存储引擎
MariaDB [(none)]>  show variables like 'storage_engine';

3.4. 进行MariaDB安全性配置

退出MariaDB,在Linux命令行中执行命令:mysql_secure_installation

~]# /usr/bin/mysql_secure_installation
#输入root(mysql)的密码。默认没有,直接回车
Enter current password for root (enter for none):
#是否切换到unix套接字身份验证[Y/n]
Switch to unix_socket authentication [Y/n] n
#是否设置root密码
Change the root password? [Y/n]
#如果选Y,就输入2次密码
New password:
Re-enter new password:
#是否删除匿名用户?(就是空用户),建议删除
Remove anonymous users? [Y/n] y
#是否不允许远程root登录
Disallow root login remotely? [Y/n] n
#是否删除test数据库
Remove test database and access to it? [Y/n] n
#是否加载权限使之生效
Reload privilege tables now? [Y/n] y

初始化MariaDB完成,直接登录,成功。

3.5. 防火墙开放3306端口

~]# firewall-cmd --permanent --add-port=3306/tcp
success
~]# firewall-cmd --reload
success

4. 基本配置

参考:https://tsov.net/home/view/3084/ (MariaDB/MySQL配置文件my.cnf解读)
https://blog.csdn.net/iteye_5495/article/details/82609222
https://blog.csdn.net/yts1115084429/article/details/100888126?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242
https://www.cnblogs.com/clschao/articles/9962347.html

4.1. 停止MariaDB数据库

~]# systemctl stop mariadb

4.2. 编辑文件vim /etc/my.cnf.d/server.cnf

[mysqld]
#设置数据库使用端口
port=3306
#默认的数据库存储引擎
default_storage_engine = InnoDB
#数据文件位置
datadir=/data/mysql
#指定socket
socket = /data/mysql/mysql.sock
#设置数据库默认字符集
character-set-server=utf8mb4
#定义可以被发送的最大的包大小
max_allowed_packet = 1024M
#InnoDB 的缓冲池
innodb_buffer_pool_size = 1024M
#事务日志文件写操作缓存区的最大长度(默认设置是1MB)
innodb_log_file_size = 512M
#设置数据库字母大小写不敏感
lower_case_table_names=1
#修改最大连接数
max_connections=1000
#服务器性能工具
performance_schema = ON
#慢日志查询开关
slow_query_log = 1
#慢查询时间
long_query_time = 2
#binlog日志格式,默认采用staterment,建议采用mixed
binlog_format = mixed
#定义了你MySQL应该支持的sql语法,对数据的校验等等。
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#慢查询日志文件
slow_query_log_file = /var/log/slow_query.log
#定义错误日志路径
log-error = /var/log/mysql-error.log
#不执行将IP解析成主机名
skip-name-resolve = ON

4.3. 编辑文件vim /etc/my.cnf.d/mysql-clients.cnf

[mysql]
default-character-set=utf8mb4
socket = /data/mysql/mysql.sock

4.4. 将MariaDB的数据文件从/var/lib/mysql 迁移到 /data/

~]# touch /var/log/slow_query.log
~]# touch /var/log/mysql-error.log
~]# chown mysql:mysql /var/log/slow_query.log
~]# chown mysql:mysql /var/log/mysql-error.log
~]# mkdir /data
~]# chown -R mysql:mysql /data
~]# mv /var/lib/mysql /data/

4.5. 启动MariaDB

~]# systemctl start mariadb

5. MariaDB的日志

参考:https://blog.csdn.net/han156/article/details/104411306

6.性能优化

参考:https://database.51cto.com/art/202011/631859.htm