安裝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]#