安装mariadb
安装过程
- 首先切换到/usr/local/src目录下
[root@hf-01 ~]# cd /usr/local/src
[root@hf-01 src]#
- 而后在官网下载10.2.6版本(官网下载很慢,由于地址在美国),本身百度云有提早下载好的,只须要下载到windows,而后 rz 命令从windows上传到linux中
- rz命令,安装包——>yum install -y lrzsz
[root@hf-01 src]# ls
mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
- 再去使用 tar命令 进行解压
[root@hf-01 src]# tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
- 解压完,去查看下文件
[root@hf-01 src]# ls
mariadb-10.2.6-linux-glibc_214-x86_64 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
[root@hf-01 src]#
- 并将解压的包移动到/usr/local下,并更名叫mariadb——>这里的更名,是为了以前安装mysql的名字有所区分
[root@hf-01 src]# mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
[root@hf-01 src]#
- 而后进入到/usr/local/mariadb 目录下去
[root@hf-01 src]# cd !$
cd /usr/local/mariadb
[root@hf-01 mariadb]#
- 建立mysql用户,建立data——>这里由于以前安装mysql的时候,已经建立过了因此不须要建立useradd mysql
[root@hf-01 mysql]# useradd mysql
[root@hf-01 mysql]# mkdir /data/
- 初始化,./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
- 定义basedir=/usr/local/mariadb/ 若不定义 ,就会去找mysql了
[root@hf-01 mariadb]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
- 查看是否初始化成功,看 echo $? 执行结果是否为0,如果 0 ,则表示初始化成功
[root@hf-01 mariadb]# echo $?
0
[root@hf-01 mariadb]#
- 或者查看/data/mariadb/目录下,是否生成了一些目录——>和/data/mysql/ 相似
[root@hf-01 mariadb]# ls /data/mariadb/
aria_log.00000001 aria_log_control ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema test
[root@hf-01 mariadb]#
- 拷贝配置文件,定义启动脚本
- 配置文件存放在/usr/local/mariadb/suport/files/目录下,会看到有不少配置文件
[root@hf-01 mariadb]# cd /usr/local/mariadb/
[root@hf-01 mariadb]# ls support-files/
binary-configure my-large.cnf mysql-log-rotate wsrep_notify
magic my-medium.cnf mysql.server
my-huge.cnf my-small.cnf policy
my-innodb-heavy-4G.cnf mysqld_multi.server wsrep.cnf
[root@hf-01 mariadb]#
- 打开support-files/my-small.cnf 文件
- my-small.cnf、my-medium.cnf、my-large.cnf这三个配置文件区别在于 缓存的数值大小不一样
- 根据内存大小的不一样,它能够给你指定合适的缓存,这样可以让你的mysql达到更高效的性能
[root@hf-01 mariadb]# vim support-files/my-small.cnf
其中下面的配置文件
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 240K
- 由于咱们作实验,内存原本就不大,可使用最小的一个my-small.cnf ,拷贝过去
- 如果内存有几十个G,可使用my-huge.cnf拷贝过去,而后根据实际的运行状况 ,去适当的调整参数
- 拷贝文件到/usr/local/mariadb/my.cnf
- mariadb这里就不放到/etc/my.cnf下了,由于这是mysql用的,这里为了区分到/usr/local/mariadb/my.cnf
[root@hf-01 mariadb]# cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
[root@hf-01 mariadb]#
- 编辑配置文件 /usr/local/mariadb/my.cnf——>这里面配置不用修改
[root@hf-01 mariadb]# vim /usr/local/mariadb/my.cnf
配置参数在[mysqld]这一块
server-id = 1 //这是作主从复制的
- 拷贝启动脚本到 /etc/init.d/mariadb
[root@hf-01 mariadb]# cp support-files/mysql.server /etc/init.d/mariadb
[root@hf-01 mariadb]#
- 编辑启动脚本
[root@hf-01 mariadb]# vim /etc/init.d/mariadb
定义 basedir=/usr/local/mariadb
定义 datadir=/data/mariadb
自定义参数 conf=$basedir/my.cnf
在定义conf后,还须要在 启动命令下面指定下——>在通常模式下,搜索 /start 启动命令
在 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &
中,增长--defaults-file="$conf",最后为 $bindir/mysqld_safe --defaults-file="$conf" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &
并保存退出
- 在启动前,先查看是否有mysql服务在启动
[root@hf-01 mariadb]# ps aux |grep mysql
root 2526 0.0 0.0 112656 992 pts/0 R+ 00:10 0:00 grep --color=auto mysq
[root@hf-01 mariadb]#
- 启动mariadb服务,并去查看是否启动
- 查看是否启动,用ps aux |grep mysql 也能够,启动的服务进程是mysqld,由于mariadb是mysql的一个分支
[root@hf-01 mariadb]# /etc/init.d/mariadb start
Reloading systemd: [ 肯定 ]
Starting mariadb (via systemctl): [ 肯定 ]
[root@hf-01 mariadb]# ps aux |grep mariadb
root 2543 0.0 0.1 115348 1748 ? S 00:11 0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mysql --pid-file=/data/mysql/hanfeng.pid
mysql 2659 5.5 5.7 1125580 58008 ? Sl 00:11 0:01 /usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/my.cnf --basedir=/usr/local/mariadb --datadir=/data/mysql --plugin-dir=/usr/local/mariadb/lib/plugin --user=mysql --log-error=/data/mysql/hanfeng.err --pid-file=/data/mysql/hanfeng.pid --socket=/tmp/mysql.sock --port=3306
root 2708 0.0 0.0 112656 992 pts/0 R+ 00:11 0:00 grep --color=auto mariadb
[root@hf-01 mariadb]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2246/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1147/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2246/master
tcp6 0 0 :::3306 :::* LISTEN 2659/mysqld
tcp6 0 0 :::22 :::* LISTEN 1147/sshd
[root@hf-01 mariadb]#
- 如果在服务器上只安装了mariadb,没有mysql,那彻底能够把my.cnf放在/etc目录下,那启动脚本就不须要conf变量了
机器装了mysql和mariadb
- 一台机器上装了mysql,又装了mariadb (这种既装了mysql和mariadb的几率很低),由于有多个配置文件在/etc/my.cnf,不管是在初始化的时候,仍是启动多个mysql服务的时候,它都会影响正常的结果,因此要么不把 my.cnf 放在etc目录下,一旦放了,颇有可能受到影响。
- 问题:
- 用ps aux |grep mysql会发现其中的--datadir=/data/mysql,并非咱们预期的--datadir=/data/mariadb
- 这是由于调用了/etc/my.cnf中的配置,有人可能会问,不是已经指定了--defaults-file=/usr/local/mariadb/my.cnf 配置文件,为何还要去加载/etc/my.cnf中的配置呢,是由于--defaults-file=/usr/local/mariadb/my.cnf文件中,并无去定义dataidr 这个选项,而后去调用的时候,没有在配置文件中找到这个参数,而后在/etc/my.cnf中调用
- 解决方法:
-
- 须要去编辑指定的配置文件,在 /usr/local/mariadb/my.cnf 文件中的 [mysqld] 下加入datadir= /data/mariadb (如果datadir加在其余地方是无效的)
- 固然不是只能拥有一个数据库,只要将各个参数配置完善,一个机器上能够跑多个mysql服务
-
- 在修改完配置文件后,启动/etc/init.d/mariadb start (第一次启动mariadb服务)——>如果mariadb服务已经启动了,则/etc/init.d/mariadb restart ,但显示的结果还未正常,那咱们就直接killall mysqld服务,而后再ps aux |grep mysql查看下服务是否杀死
-
- 最后再来 /etc/init.d/mariadb restart 开启mariadb服务,会看到显示正常。
[root@hf-01 mariadb]# ps aux |grep mysql
root 3123 0.0 0.1 115392 1740 ? S 04:52 0:00 /bin/sh /usr/local/mariadb/bin/mysqld_safe --defaults-file=/usr/local/mariadb/my.cnf --datadir=/data/mariadb --pid-file=/data/mariadb/hf-01.pid
mysql 3242 3.6 6.2 1125520 62780 ? Sl 04:52 0:00 /usr/local/mariadb/bin/mysqld --defaults-file=/usr/local/mariadb/my.cnf --basedir=/usr/local/mariadb --datadir=/data/mariadb --plugin-dir=/usr/local/mariadb/lib/plugin --user=mysql --log-error=/data/mariadb/hf-01.err --pid-file=/data/mariadb/hf-01.pid --socket=/tmp/mysql.sock --port=3306
root 3278 0.0 0.0 112672 984 pts/0 R+ 04:53 0:00 grep --color=auto mysql
[root@hf-01 mariadb]#