centos 上安裝mysql (mariadb)多實例並設置開機啟動


1、先在centos上安裝mariadb

yum install mariadb mariadb-server

2、設置mariadb開機啟動

[root@localhost ~]#systemctl enable mariadb 

Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service

3、准備安裝多實例的文件夾 

mkdir /usr/dbs
mkdir /usr/dbs/databases
mkdir /usr/dbs/databases/{3307,3308,3308,3310}
mkdir /usr/dbs/{etc,bin,socket}
#為路徑授權,以免后期操作出現權限問題
chmod -R 777 /usr/dbs 

4、安裝多實例

mysql_install_db --basedir=/usr --datadir=/user/dbs/databases/3307 --user=mysql
mysql_install_db --basedir=/usr --datadir=/usr/dbs/databases/3307 --user=mysql
mysql_install_db --basedir=/usr --datadir=/usr/dbs/databases/3308 --user=mysql
mysql_install_db --basedir=/usr --datadir=/usr/dbs/databases/3309 --user=mysql
mysql_install_db --basedir=/usr --datadir=/usr/dbs/databases/3310 --user=mysql

其中的參數--basedir是指定了安裝 MySQL 的安裝路徑,--datadir是指即將安裝到的數據庫文件目錄,如果不知道--basedir該怎么填,可以登錄進mysql后查詢:

 show variables like '%basedir%';

--user是指mysql實例將使用的在linux系統中的用戶,最好命名為mysql,yum安裝后一般都有這個用戶,如果沒有可以自主創建:

groupadd mysql
adduser -g mysql mysql

5、查看數據庫文件是否安裝成功

ls /usr/dbs/databases/3307
aria_log.00000001  aria_log_control  mysql  performance_schema  test

如果文件夾中有文件則說明創建成功

6、創建共用配置文件

  mkdir /usr/dbs/etc/my.cnf.d/

7、vi  /usr/dbs/etc/my.cnf.d/my.cnf

8、

[mysqld]
skip-name-resolve
lower_case_table_names=1
innodb_file_per_table=1
back_log = 50
max_connections = 300
max_connect_errors = 1000
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 2M
max_heap_table_size = 64M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 64
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
default-storage-engine = innodb
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=mysql-bin
binlog_format=mixed
slow_query_log
long_query_time = 1
server-id = 1
key_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 200M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 60
innodb_lock_wait_timeout = 120
[mysqldump]
quick
max_allowed_packet = 256M
[mysql]
no-auto-rehash
prompt=\\u@\\d \\R:\\m>
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192

有些參數需要根據自己服務器配置進行調整,否則磁盤或者內存可能不夠,我是在虛擬機上安裝的所以我的

innodb_buffer_pool_size 設置了50M內存,太大了虛擬機跑不起來。
8、創建各個實力的配置文件
vi /usr/dbs/etc/3307.cnf

[client]
port = 3307
socket = /usr/dbs/socket/mysql3307.sock
[mysqld]
datadir=/usr/dbs/databases/3307
port = 3307
socket =  /usr/dbs/socket/mysql3307.sock
 
!includedir /home/multiMysql/etc/my.cnf.d

依照上面的格式改變對應端口和路徑建立其他配置文件

9、編寫數據庫啟動文件

  vi /usr/dbs/bin/mysql.sh

#!/bin/bash
mysql_port=$2
mysql_username="root"
mysql_password=""
function_start_mysql()
{
        printf "Starting MySQL...\n"
        mysqld_safe --defaults-file=/usr/dbs/etc/${mysql_port}.cnf 2>&1 > /dev/null &
}
function_stop_mysql()
{
        printf "Stoping MySQL...\n"
        mysqladmin -u ${mysql_username} -p${mysql_password} -S /usr/dbs/socket/mysql${mysql_port}.sock shutdown
}
function_restart_mysql()
{
        printf "Restarting MySQL...\n"
        function_stop_mysql
        function_start_mysql
}
function_kill_mysql()
{
        kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${mysql_port} | awk '{printf $2}')
        kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${mysql_port} | awk '{printf $2}')
}
case $1 in
start)
function_start_mysql;;
stop)
function_stop_mysql;;
kill)
function_kill_mysql;;
restart)
function_stop_mysql
function_start_mysql;;
*)
esac

賦予可執行權限

chmod +x /usr/dbs/bin/mysql.sh

10、編寫啟動腳本調用啟動文件
vi /usr/dbs/bin/runall.sh
#!/bin/bash
/usr/dbs/bin/mysql.sh start 3307
/usr/dbs/bin/mysql.sh start 3308
/usr/dbs/bin/mysql.sh start 3309
/usr/dbs/bin/mysql.sh start 3310
/usr/dbs/bin/mysql.sh start 3311

賦予執行權限

chmod +x /usr/dbs/bin/runall.sh

11、運行 /usr/dbs/bin/runall.sh start

  停止的是要輸入端口 然后輸入密碼

/usr/dbs/binmysl.sh stop 3307

嘗試連接數據庫

mysql -u root -S /usr/dbs/socket/mysql3307.sock

回車直接進入數據

12、賦權遠程登錄

  登錄數據庫然后執行如下命令:

MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
MariaDB [(none)]> flush privileges;

為了安全也可以新建用戶,不適用root。

 

13、將腳本加入啟動腳本

  vi /etc/init.d/runall.sh

#!/bin/bash
# chkconfig: 2345 10 90
# description: 啟動mysql
/usr/dbs/bin/mysql.sh start 3307
/usr/dbs/bin/mysql.sh start 3308
/usr/dbs/bin/mysql.sh start 3309
/usr/dbs/bin/mysql.sh start 3310
/usr/dbs/bin/mysql.sh start 3311

chmod +x /etc/init.d/runall.sh 

chkconfig --add autostart.sh
 
chkconfig autostart.sh on

這樣就可以開機啟動了

開機啟動腳本中 

# chkconfig: 2345 10 90 # description: 啟動mysql 這兩行是很重要的沒有這兩行無法加入自動啟動


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM