一台服务器编译安装多个MySQL数据库

发表于 2020-04-17  6.99k 次阅读


虽然最好的是一台服务器一个MySQL,但是由于预算问题。只能在一台服务器搭建多个MySQL, 本文详细记录了一台服务器如何编译安装多个MySQL,让一台服务器多个MySQL数据库同时运行

前提:

*编译安装需要依赖boost环境,根据你要安装的版本来下载,下载地址如下:

boost官网下载地址:https://sourceforge.net/projects/boost/files/boost/

MySQL官网下载地址:https://downloads.mysql.com/archives/community/

*我这里安装的是 MySQL5.7.28 , boost 所依赖的版本是 1.59.0

建议使用迅雷下载到本地,再上传到服务器,直接下载速度较慢

1.创建数据目录和安装目录

*路径自己随意选择安装,我这里是/110/mysql3307
mkdir -pv /110/mysql3307/{install,data,binlog,logs}
一台服务器编译安装多个MySQL数据库插图

2.创建mysql用户(有就不用创建)

cat /etc/passwd |grep mysql

cat /etc/group |grep mysql

groupadd -r -g 27 mysql

useradd -s /sbin/nologin -r -u 27 -g 27 -d /110/mysql3307/data mysql
#权限一定要给mysql安装整个目录

3.安装依赖

*安装必要的环境依赖
yum -y install wget gcc gcc-c++ cmake openssl-devel ncurses-devel zlib-devel bzip2

cd /110/mysqlwj

*下载boost 1.59.0
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.bz2

*下载mysql5.7.28 
wget  https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.28.tar.gz
一台服务器编译安装多个MySQL数据库插图(1)

4.解压boost和mysql

cd /110/mysqlwj

tar -xvf boost_1_59_0.tar.bz2 

mv boost_1_59_0 boost
*注意更改boost目录名

tar -xvf mysql-5.7.28.tar.gz
一台服务器编译安装多个MySQL数据库插图(2)

5.编译安装mysql5.7.28

cd /110/mysqlwj/mysql-5.7.28
*进入解压的目录,运行下面的命令
*下面命令请根据自身环境进行修改
cmake . \
-DCMAKE_INSTALL_PREFIX=/110/mysql3307/install \
-DWITH_BOOST=/110/mysql3307/boost \
-DMYSQL_DATADIR=/110/mysql3307/data \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BOOST=/110/mysqlwj/boost \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/110/mysql3307/data/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DMYSQL_TCP_PORT=3307 \
-DSYSCONFDIR=/110/mysql3307

*以上成功运行完成以后:

make
*运行make编译安装命令(安装时间和你服务器硬件配置成正比)
make install
*安装完成以后再次运行此命令,等待安装完成
一台服务器编译安装多个MySQL数据库插图(3)

6.初始化数据

cd /110/mysql3307/install

chown -R mysql:mysql /110/mysql3307

./bin/mysqld --initialize --user=mysql --basedir=--basedir=/110/mysql3307/install --datadir=/110/mysql3307/data  (初始化数据库实例)

*上下只需要成功运行一个即可

./bin/mysql_install_db --user=mysql --basedir=/110/mysql3307/install --datadir=/110/mysql3307/data  (初始化数据目录)

7.创建my.cnf(可以参考官网自定义配置)

cd /110/mysql3307

touch my.cnf
*创建my.cnf文件
vim my.cnf
*编辑my.cnf配置文件

*可直接复制以下配置文件,也可到mysql官网参考,注意修改路径
[client]
#客户端设置
port = 3307
socket = /110/mysql3307/data/mysql.sock
default-character-set = utf8mb4
 
[mysqld]
user = mysql
port = 3307
socket = /110/mysql3307/data/mysql.sock
server-id = 7777
pid-file = /110/mysql3307/data/mysql.pid
#安装目录
basedir = /110/mysql3307/install
#数据库存放目录
datadir = /110/mysql3307/data/
#系统数据库编码设置,排序规则
character_set_server = utf8mb4
collation_server = utf8mb4_bin
back_log = 1024
explicit_defaults_for_timestamp = false
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections = 5000
max_connect_errors = 1000
table_open_cache = 2000
table_open_cache_instances = 16
thread_stack = 256K
thread_cache_size = 256 
tmp_table_size=360M
read_buffer_size=1M
read_rnd_buffer_size=4M
max_heap_table_size=32M
skip-external-locking
interactive_timeout = 3600
wait_timeout = 3600
log_timestamps = SYSTEM
log-error = /110/mysql3307/logs/error.log
innodb_file_per_table=1
log_bin = /110/mysql3307/binlog/mysql-bin
log_bin_index = /110/mysql3307/binlog/mysql-bin.index
skip-name-resolve
event_scheduler=1
lower_case_table_names = 1
default-storage-engine=INNODB
slave_skip_errors=1062,1032,1396,1133
#是否开启慢查询,慢查询时间10s
slow-query-log=1
long_query_time=10
log-bin-trust-function-creators=1
#主从配置
log_slave_updates = 1
binlog_format = mixed
relay_log = /110/mysql3307/binlog/mysql-relay-bin
relay_log_index = /110/mysql3307/binlog/mysql-relay-bin.index 
relay_log_purge = 5
#默认使用InnoDB存储引擎
default_storage_engine = InnoDB
innodb_buffer_pool_size = 2G
innodb_purge_threads = 1
innodb_log_buffer_size = 2M
innodb_log_file_size = 128M
innodb_lock_wait_timeout = 50
bulk_insert_buffer_size = 32M
myisam_sort_buffer_size = 8M
# MySQL重建索引时所允许的最大临时文件的大小
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
skip-grant-tables
 
[mysqldump]
quick
max_allowed_packet = 128M
 
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
一台服务器编译安装多个MySQL数据库插图(4)

8.启动mysql,修改密码

*运行mysql
/110/mysql3307/install/bin/mysqld --defaults-file=/110/mysql3307/my.cnf --user=mysql &

*登录修改密码(注:登录MySQL需要在安装目录的/install/bin里面./运行)
./mysql -uroot -p -S /110/mysql3307/data/mysql.sock
*刷新权限
flush privileges;
*设置root用户及密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Pass1234+';

*重启MySQL,使配置生效
*查看mysql进程ID
ps -ef | grep /110/mysql3307/install/bin/mysqld
*结束MySQL进程,kill+进程ID
kill -9 45128
*再次启动MySQL
/110/mysql3307/install/bin/mysqld --defaults-file=/110/mysql3307/my.cnf --user=mysql &
一台服务器编译安装多个MySQL数据库插图(5)
一台服务器编译安装多个MySQL数据库插图(6)
一台服务器编译安装多个MySQL数据库插图(7)

9.注释my.cnf,设置远程访问权限

vim /110/mysql3307/my.cnf 
*编辑my.cnf配置文件
*注释掉#skip-grant-tables 保存退出
一台服务器编译安装多个MySQL数据库插图(8)
*数据库授权用户远程连接 
grant all privileges on *.* to [email protected]'%' identified by '123qaz!' with grant option;

*数据库刷新权限
flush privileges;
一台服务器编译安装多个MySQL数据库插图(9)

10.检测第一个MySQL是否安装成功并且可以正常访问

*在MySQL软件进行连接访问测试
*访问之前注意开放端口或者直接关闭防火墙
*关闭防火墙命令
systemctl stop firewalld.service 
一台服务器编译安装多个MySQL数据库插图(10)

10.安装第二个MySQL数据库

除用户不用再次创建以外,第二个、第三个、第四个、第五个数据库都是跟上面操作一致,在此就不多做演示了,按照操作步骤来就没问题的


小霜网丨一个清新文艺有趣的万能小站