一 源码二进制安装Mariadb
1.1.1 准备所需用户
[root@mysql-master ~]# useradd -r mysql -s /sbin/nologin
[root@mysql-master ~]# id mysql
uid=996(mysql) gid=994(mysql) 组=994(mysql)
1.1.2 解压创建相应目录
[root@mysql-master ~]# tar xf mariadb-10.2.22-linux-x86_64.tar.gz -C /usr/local/
[root@mysql-master ~]# cd /usr/local/
[root@mysql-master local]# ln -s mariadb-10.2.22-linux-x86_64/ mysql
[root@mysql-master local]# chown -R mysql.mysql mysql/
[root@mysql-master local]# cd mysql/bin/
[root@mysql-master bin]# pwd
/usr/local/mysql/bin
[root@mysql-master bin]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@mysql-master bin]# . /etc/profile.d/mysql.sh
[root@mysql-master bin]# mkdir /data/mysqldb -p
[root@mysql-master bin]# chown -R mysql.mysql /data/mysqldb/
[root@mysql-master bin]# chmod 770 /data/mysqldb/
1.1.3 初始化数据库
[root@mysql-master mysql]# scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
Installing MariaDB/MySQL system tables in '/data/mysqldb' ...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
'./bin/mysqladmin' -u root password 'new-password'
'./bin/mysqladmin' -u root -h mysql-master password 'new-password'
Alternatively you can run:
'./bin/mysql_secure_installation'
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
You can start the MariaDB daemon with:
cd '.' ; ./bin/mysqld_safe --datadir='/data/mysqldb'
You can test the MariaDB daemon with mysql-test-run.pl
cd './mysql-test' ; perl mysql-test-run.pl
Please report any problems at http://mariadb.org/jira
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
1.1.4 配置主配置文件,以及启动文件
# 拷贝模板文件
[root@mysql-master support-files]# pwd
/usr/local/mysql/support-files
[root@mysql-master support-files]# cp my-huge.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
# 修改数据库存储位置
[root@mysql-master support-files]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysqldb
# 拷贝启动文件
[root@mysql-master support-files]# cp mysql.server /etc/init.d/mysqld
[root@mysql-master support-files]# chkconfig --add mysqld
[root@mysql-master support-files]# chkconfig --list
mysqld 0:关 1:关 2:开 3:开 4:.5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:.5:关 6:关
network 0:关 1:关 2:开 3:开 4:.5:开 6:关
# 启动服务
[root@mysql-master support-files]# service mysqld start
Starting mysqld (via systemctl): [ 确定 ]
[root@mysql-master support-files]# ls /data/mysqldb/aria_log.00000001 mysql
aria_log_control mysql-bin.000001
ib_buffer_pool mysql-bin.index
ibdata1 mysql-master.err
ib_logfile0 mysql-master.pid
ib_logfile1 performance_schema
ibtmp1 test
multi-master.info
1.1.5 初始化安全配置
[root@mysql-master support-files]# mysql_secure_installation
二 多实例配置
2.1.1 创建所需文件夹
mkdir /date/{3307,3308}/{etc,socket,pid,log,data} -p
chown -R mysql.mysql /date/
tree /date
/date
├── 3307
│ ├── data
│ ├── etc
│ ├── log
│ ├── pid
│ └── socket
└── 3308
├── data
├── etc
├── log
├── pid
└── socket
2.1.2 初始化数据库
/usr/local/mysql/scripts/mysql_install_db --datadir=/date/3307/data/ --user=mysql --basedir=/usr/local/mysql
# basedir获取路径
# mysql -uroot -p123456 -e 'show variables like "basedir"'
+---------------+------------------+
| Variable_name | Value |
+---------------+------------------+
| basedir | /usr/local/mysql |
+---------------+------------------+
2.1.3 创建配置文件
[root@mysql-master ~]# cp /etc/my.cnf /date/3307/etc/
[root@mysql-master ~]# vim /date/3307/etc/my.cnf
[client]
#password = your_password
port = 3307
socket = /date/3307/socket/mysql.sock
[mysqld]
port = 3307
datadir=/date/3307/data
socket = /date/3307/socket/mysql.sock
[mysqld_safe]
log-error=/date/3307/log/mariadb.log
pid-file=/date/3307/pid/mariadb.pid
# 按需修改
[root@mysql-master ~]# cp /date/3307/etc/my.cnf /date/3308/etc/my.cnf
2.1.4 编辑启动脚本
# cat mysqld
#!/bin/bash
port=3307
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/local/mysql/bin"
mysql_basedir="/date"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
function_start_mysql() {
if [ ! -e "$mysql_sock" ];then
printf "Start Mysql....\n"
${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
else
printf "Mysql is running...\n"
exit
fi
}
function_stop_mysql() {
if [ ! -e "$mysql_sock" ];then
printf "Mysql is stopped....\n"
exit
else
printf "Stoping Mysql....\n"
${cmd_path}/mysqladmin -u${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}
function_restart_mysql() {
printf "Restart Mysql...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
2.1.5 测试
[root@mysql-master 3307]# sh mysqld start
Start Mysql....
[root@mysql-master 3307]# ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 80 :::3306 :::*
LISTEN 0 80 :::3307 :::*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*