【MariaDB】MariaDB 10.7.3二进制包安装

1、上传MariaDB 10.7.3二进制包到/usr/local/src目录下

# cd /usr/local/src/
# rz
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring mariadb-10.7.3-linux-systemd-x86_64.tar.gz...
  100%  338007 KB    24143 KB/sec    00:00:14       0 Errors  

# ll
-rw-r--r-- 1 root root 346120004 Apr 11 03:12 mariadb-10.7.3-linux-systemd-x86_64.tar.gz

2、解压包,并将解压后的目录移动到/usr/local/mysql目录下

# tar -xzf mariadb-10.7.3-linux-systemd-x86_64.tar.gz
# mv mariadb-10.7.3-linux-systemd-x86_64 /usr/local/mysql
# cd ../mysql
# ls
bin  COPYING  CREDITS  include  INSTALL-BINARY  lib  man  mysql-test  README.md  README-wsrep  scripts  share  sql-bench  support-files  THIRDPARTY

3、创建数据目录

# mkdir -p /data/mysql

4、创建mysql用户和组,并为目录赋mysql用户和组权限

# groupadd mysql
# useradd -d /data/mysql -g mysql mysql
# chown -R mysql.mysql /data/mysql /usr/local/mysql

5、安装MariaDB

# cd /usr/local/mysql
# ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --skip-name-resolve --user=mysql
Installing MariaDB/MySQL system tables in '/data/mysql' ...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system


Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is mysql@localhost, it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo

See the MariaDB Knowledgebase at https://mariadb.com/kb

You can start the MariaDB daemon with:
cd '/usr/local/mysql' ; /usr/local/mysql/bin/mysqld_safe --datadir='/data/mysql'

You can test the MariaDB daemon with mysql-test-run.pl
cd '/usr/local/mysql/mysql-test' ; perl mysql-test-run.pl

Please report any problems at https://mariadb.org/jira

The latest information about MariaDB is available at https://mariadb.org/.

Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

# cd /data/mysql/
# ll
total 111020
-rw-rw---- 1 mysql mysql    409600 Apr 14 03:10 aria_log.00000001
-rw-rw---- 1 mysql mysql        52 Apr 14 03:10 aria_log_control
-rw-rw---- 1 mysql mysql       942 Apr 14 03:10 ib_buffer_pool
-rw-rw---- 1 mysql mysql  12582912 Apr 14 03:10 ibdata1
-rw-rw---- 1 mysql mysql 100663296 Apr 14 03:10 ib_logfile0
drwx------ 2 mysql mysql      4096 Apr 14 03:10 mysql
-rw-r--r-- 1 root  root         14 Apr 14 03:10 mysql_upgrade_info
drwx------ 2 mysql mysql        20 Apr 14 03:10 performance_schema
drwx------ 2 mysql mysql      8192 Apr 14 03:10 sys
drwx------ 2 mysql mysql        20 Apr 14 03:10 test

6、创建配置文件my.cnf

# cd /etc/
# ls -ltr my.cnf
-rw-r--r--. 1 root root 570 Sep 30  2020 my.cnf
# mv my.cnf my.cnf.backup
# vi my.cnf

以下为my.cnf的具体配置

[client]
port    = 3306
socket  = /tmp/mysql.sock

[mysqld]
port    = 3306
socket  = /tmp/mysql.sock
user    = mysql
basedir = /usr/local/mysql
datadir = /data/mysql
log_error = /data/mysql/mysql.err
pid-file  = /data/mysql/mysql.pid

# 禁用DNS解析,使用IP访问的情况下加快访速度。
skip_name_resolve
skip-external-locking
#skip-networking

# 关闭认证,取消注释,可重置 root 密码
# skip-grant-tables

# 这个参数用来缓存MyISAM存储引擎的索引参数。MySQL5.5默认为InnoDB存储引擎,所以这个参数可以设置小点,64MB即可。
key_buffer_size = 64M

# 每个连接传输数据大小.最大1G,须是1024的倍数,一般设为最大的BLOB的值。
# 允许最大接收数据包的大小,防止服务器发送过大的数据包。可以设置为16MB或者更大,但设置的太大也可能有危险。
max_allowed_packet = 4M

# MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。
# 默认值64,假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件描述符数目);
# 当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上。
table_open_cache = 256

# 排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序。
# 在表进行order by和group by排序操作时,由于排序的字段没有索引,会出现Using filesort,为了提高性能,可用此参数增加每个线程分配的缓冲区大小。
# 默认为256KB,这个参数不要设置过大,一般在128~256KB即可。另外,一般出现Using filesort的时候,要通过增加索引来解决。
sort_buffer_size = 1M

# 不带索引的全表扫描.使用的buffer的最小值
join_buffer_size = 16M

# 包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节。
net_buffer_length = 8K

# 该参数用于表的顺序扫描,表示每个线程分配的缓冲区大小。
# 比如在进行全表扫描时,MySQL会按照数据的存储顺序依次读取数据块,每次读取的数据块首先会暂存在read_buffer_size中
# 当buffer空间被写满或者全部数据读取结束后,再将buffer中的数据返回给上层调用者,以提高效率。
# 默认为128K,这个参数不要设置过大,一般在128~256之间。
read_buffer_size = 1M

# 该参数用于表的随机读取,表示每个线程分配的缓冲区大小。
# 比如,按照一个非索引字段做order by排序操作时,就会利用这个缓冲区来暂存读取的数据。
# 默认为256KB,这个参数不要设置过大,一般在128~512KB。
read_rnd_buffer_size = 512K

# 当对MyISAM表执行repair table或创建索引时,用以缓存排序索引;设置太小时可能会遇到” myisam_sort_buffer_size is too small”
myisam_sort_buffer_size = 16M

# 线程池,线程缓存。用来缓存空闲的线程,以至于不被销毁,如果线程缓存在的空闲线程,需要重新建立新连接,则会优先调用线程池中的缓存,很快就能响应连接请求。
# 每建立一个连接,都需要一个线程与之匹配。
thread_cache_size = 32

# 查询缓冲大小
# 缓存select语句和结果集大小的参数。
# 查询缓存会存储一个select查询的文本与被传送到客户端的相应结果。
# 如果之后接收到一个相同的查询,服务器会从查询缓存中检索结果,而不是再次分析和执行这个同样的查询。
# 如果你的环境中写操作很少,读操作频繁,那么打开query_cache_type=1,会对性能有明显提升。
# 如果写操作频繁,则应该关闭它(query_cache_type=0)。
query_cache_size = 32M

# 指定单个查询能够使用的缓冲区大小,缺省为1M
query_cache_limit = 4M

# 临时HEAP数据表的最大长度(默认设置是32M); 超过这个长度的临时数据表将被转换为MyISAM数据表并存入一个临时文件。
tmp_table_size = 64M

# 设定默认的事务隔离级别
transaction_isolation = REPEATABLE-READ

# 线程使用的堆大小. 此值限制内存中能处理的存储过程的递归深度和SQL语句复杂性,此容量的内存在每次连接时被预留.
thread_stack = 512K

# 指定一个请求的最大连接时间
wait_timeout = 3600
interactive_timeout = 3600

# 是否显示默认时间戳。
explicit_defaults_for_timestamp = true

# 该参数用来设置最大连接数,告诉你当前你的服务器允许多少并发连接。
# 默认为100,一般设置为512-1000即可。请记住,太多的连接会导致内存的使用量过高并且会锁住你的 MySQL 服务器。
# 一般小网站需要 100-200 的连接数,而较大可能需要 500-800 甚至更多。这里的值很大程度上取决于你 MySQL/MariaDB 的使用情况。
max_connections = 500

# 每个客户端连接最大的错误允许数量,当超过该次数,MYSQL服务器将禁止此主机的连接请求,直到MYSQL服务器重启或通过flush hosts命令清空此主机的相关信息
# 如果有时网络抽风,或者应用配置错误,或者其他原因导致客户端短时间内不断的尝试连接,客户端可能会被列入黑名单,然后将无法连接,直到再次刷新主机缓存。
# 这个选项默认值太小了,可以考虑设的足够大(如果你的服务器配置够强大的话)。
max_connect_errors = 100

# mysql打开最大文件数
open_files_limit = 32768

# 是操作系统在监听队列中所能保持的连接数
back_log = 300

# 开启二进制日志功能,若不指定路径则默认和数据存放在同一目录,生产环境强烈建议将MySQL日志和数据分开存放。
log-bin=mysql-bin

# 指定默认的二进制日志格式。
binlog_format=mixed

# 给服务器分配一个独一无二的ID编号; n的取值范围是1~2的32次方启用二进制日志功能。在复制数据同步的时候会用到,Helloweba后面会有文章介绍。
server-id   = 1

# 启用二进制日志后,保留日志的天数。服务器会自动清理指定天数前的日志文件,如果不设置则会导致服务器空间耗尽。一般设置为7~14天。
expire_logs_days = 10

# 用 InnoDB 作为默认引擎
# 新数据表的默认存储引擎(默认设置是MyISAM)。这项设置还可以通过–default-table-type选项来设置。
default_storage_engine = InnoDB

# 打开独立表空间
# InnoDB 提供了更灵活的方式,它把每个数据库的信息保存在一个 .ibd 数据文件中。每个 .idb 文件代表它自己的表空间。
# 通过这样的方式可以更快地完成类似 “TRUNCATE” 的数据库操作,当删除或截断一个数据库表时,你也可以回收未使用的空间。
# 这样配置的另一个好处是你可以将某些数据库表放在一个单独的存储设备。这可以大大提升你磁盘的 I/O 负载。
innodb_file_per_table = 1

# InnoDB主目录,所有与InnoDB数据表有关的目录或文件路径都相对于这个路径。在默认的情况下,这个主目录就是MySQL的数据目录。
innodb_data_home_dir = /data/mysql

# 用来容纳InnoDB为数据表的表空间: 可能涉及一个以上的文件; 每一个表空间文件的最大长度都必须以字节(B)、兆字节(MB)或千兆字节(GB)为单位给出;
# 表空间文件的名字必须以分号隔开; 最后一个表空间文件还可以带一个autoextend属性和一个最大长度(max:n)
innodb_data_file_path = ibdata1:10M:autoextend

# 用来存放InnoDB日志文件的目录路径(如ib_logfile0、ib_logfile1等)。在默认的情况下,InnoDB驱动程序将使用 MySQL数据目录作为自己保存日志文件的位置。
innodb_log_group_home_dir = /data/mysql

# InnoDB使用一个缓冲池来保存索引和原始数据, 可设置这个变量到服务器物理内存大小的80%
# 这个参数是InnoDB存储引擎的核心参数,默认为128KB,这个参数要设置为物理内存的60%~70%。
innodb_buffer_pool_size = 2048M

# 在InnoDb核心内的允许线程数量,建议的设置是CPU数量加上磁盘数量的两倍
innodb_thread_concurrency = 16

# 在日志组中每个日志文件的大小
# 事务日志文件写操作缓存区的最大长度(默认设置是1MB)。
innodb_log_file_size = 64M

# 用来缓冲日志数据的缓冲区的大小
# 事务日志所使用的缓存区。InnoDB在写事务日志的时候,为了提高性能,先将信息写入Innodb Log Buffer中,
# 当满足innodb_flush_log_trx_commit参数所设置的相应条件(或者日志缓冲区写满)时,再将日志写到文件(或者同步到磁盘)中。
# 可以通过innodb_log_buffer_size参数设置其可以使用的最大内存空间。
# 默认是8MB,一般为16~64MB即可。
innodb_log_buffer_size = 8M

# 在日志组中的文件总数
innodb_log_files_in_group = 3

# 这个选项决定着什么时候把日志信息写入日志文件以及什么时候把这些文件物理地写(术语称为”同步”)到硬盘上。
# 设置值0的意思是每隔一秒写一次日 志并进行 同步,这可以减少硬盘写操作次数,但可能造成数据丢失;
# 设置值1(设置设置)的意思是在每执行完一条COMMIT命令就写一次日志并进行同步,这可以防止数据丢失,但硬盘写操作可能会很频繁;
# 设置值2是一般折衷的办法,即每执行完一条COMMIT命令写一次日志,每隔一秒进行一次同步。
innodb_flush_log_at_trx_commit = 1

# SQL语句在被回滚前,InnoDB事务等待InnoDB行锁的时间
# 如果某个事务在等待n秒(s)后还没有获得所需要的资源,就使用ROLLBACK命令放弃这个事务。
# 这项设置对于发现和处理未能被InnoDB数据表驱动 程序识别出来的死锁条件有着重要的意义。这个选项的默认设置是50s。
innodb_lock_wait_timeout = 50

# 慢查询时长
long_query_time = 2

# 将没有使用索引的查询也记录下来
log-queries-not-using-indexes

# 指定服务端默认字符集
character-set-server=utf8mb4

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
# 指定客户端默认字符集
default-character-set=utf8mb4

# 不适用自动补全
no-auto-rehash

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 1M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

7、将服务配置复制到系统目录下

# cd /usr/local/mysql
# cp support-files/systemd/mariadb.service /usr/lib/systemd/system/

 这里,需要修改mariadb.service的一处配置,否则服务启动后会出现下面的报错

[/usr/lib/systemd/system/mariadb.service:65] Unknown lvalue 'ReadWritePaths' in section 'Service' 

# ReadWritePaths=-/usr/local/mysql/data  // 将此默认配置注释,增加下面的一行配置

ReadWritePaths=-/data/mysql                    // 数据目录以本地实际配置为准

8、启动MariaDB服务

# systemctl daemon-reload
# systemctl enable mariadb.service
# systemctl start mariadb.service
# systemctl status mariadb.service
● mariadb.service - MariaDB 10.7.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-04-14 03:46:49 EDT; 31min ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 1948 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 1772 ExecStartPre=/bin/sh -c [ ! -e /usr/local/mysql/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/local/mysql/bin/..; /usr/local/mysql/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 1769 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 1929 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─1929 /usr/local/mysql/bin/mariadbd

Apr 14 03:46:49 centos-7.9 systemd[1]: Starting MariaDB 10.7.3 database server...
Apr 14 03:46:49 centos-7.9 mariadbd[1929]: 2022-04-14  3:46:49 0 [Note] /usr/local/mysql/bin/mariadbd (server 10.7.3-MariaDB-log) starting as process 1929 ...
Apr 14 03:46:49 centos-7.9 systemd[1]: Started MariaDB 10.7.3 database server.

9、将mysql的bin目录添加到系统环境变量文件中

在/root/.bash_profile文件中增加mysql bin目录的路径配置

PATH=$JAVA_HOME/bin:$PATH:/usr/local/mysql/bin:$HOME/bin

配置结束后,执行下面的命令,即可生效
# source .bash_profile

10、连接mysql测试

# mysql 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.7.3-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.001 sec)

MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| global_priv               |
| gtid_slave_pos            |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| index_stats               |
| innodb_index_stats        |
| innodb_table_stats        |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles_mapping             |
| servers                   |
| slow_log                  |
| table_stats               |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| transaction_registry      |
| user                      |
+---------------------------+
31 rows in set (0.001 sec)

MariaDB [mysql]> 

11、为root用户设置密码

MariaDB [mysql]> set password for root@localhost=password('YOUR_PASS_WORD');
Query OK, 0 rows affected (0.001 sec)

MariaDB [mysql]> select user,host,password from mysql.user;
+-------------+------------+-------------------------------------------+
| User        | Host       | Password                                  |
+-------------+------------+-------------------------------------------+
| mariadb.sys | localhost  |                                           |
| root        | localhost  | *4748D6D32092AA94E0407B974B2DE7C67B5C63F4 |
| mysql       | localhost  | invalid                                   |
|             | localhost  |                                           |
|             | centos-7.9 |                                           |
+-------------+------------+-------------------------------------------+
5 rows in set (0.002 sec)

12、使用root用户和密码测试登录

# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.7.3-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.000 sec)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cnskylee

技术分享我是认真的,期待您打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值