目标: 一台服务器开多个 MySQL 实例
1, 编译安装 MySQL 服务
到官网下周 mysql 源码包, 然后通过脚本安装
#!/bin/bashyum install -y ncurses-devel cmake gcc perl-Data-Dumper gcc-c++useradd -s /sbin/nologin -r -M mysqltar -xzf mysql-boost-5.7.13.tar.gzcd mysql-5.7.13cp support-files/my-default.cnf /etc/my.cnfmake cleancmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=0 -DENABLED_LOCAL_INFILE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost/make -j 2make installmkdir /data/mysql -pchown mysql:mysql /data/mysql/chown mysql:mysql -R /usr/local/mysql//usr/local/mysql/bin/mysqld --initialize --user=mysql
初始化完成之后,/data/mysql 这里是一个实例注意: 初始化完成会提供一个初始 root 密码给你的, 要记得改
添加 mysql 环境变量
[root@k8s mysql-5.7.13]# echo 'PATH=/usr/local/mysql/bin:$PATH'>> /etc/profile[root@k8s mysql-5.7.13]# source /etc/profile
安装完成
2, 修改 my.cnf 配置
- [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld mysqladmin = /usr/local/mysql/bin/mysqladminlog = /tmp/mysql_multi.log
- # 加入以上配置
- # 第一个实例, 也就是刚安装完初始化的那个实例 [mysqld1]basedir = /usr/local/mysqldatadir = /data/mysqlport = 3306server_id = 101socket = /tmp/mysqld.sockuser = mysql
- #gtid 配置, 可选 gtid_mode=onenforce_gtid_consistency=onlog-slave-updates=onlog-bin=mysql-binbinlog_format=mixed
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
- # 第二个实例 [mysqld2]
- basedir = /usr/local/mysqldatadir = /data/3307port = 3307server_id = 102socket = /tmp/mysqld2.sockuser = mysql
- #gtid 配置, 可选 gtid_mode=onenforce_gtid_consistency=onlog-slave-updates=onlog-bin=mysql-binbinlog_format=mixed
- # 从库设置只读 read-only
3, 初始化另一个实例
指定 data 目录, 执行命令初始化
/usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/3307 初始化完成会提供一个初始 root 密码给你的, 要记得改
4, 启动实例
启动实例, 通过 mysqld_multi 启动 [root@k8s mysql-5.7.13]# mysqld_multi start
查看多实例状态
[root@k8s mysql-5.7.13]# mysqld_multi reportReporting MySQL serversMySQL server from group: mysqld1 is runningMySQL server from group: mysqld2 is running
启动完成
来源: http://www.linuxidc.com/Linux/2018-08/153804.htm