同一台服务器 安装一个mysql 通过不同的配置文件/使用不同的socket/启动多个实例/多个端口提供服务/
官方推荐mysqld_multi部署单机多实例: 一个配置文件配置多实例,同一台机器上运行的多个mysqld进程,这些进程使用不同的socket文件并监听在不同的端口上。mysqld_multi可以批量启动、关闭、或者报告这些mysqld进程的状态
# 启动
mysqld_safe --defaults-file=/data/3309/my.cnf 2>&1 > /dev/null &
mysqld_safe --defaults-file=/data/3309/my.cnf >/dev/null 2>&1 &
# 关闭
mysqladmin -u root -p111111 -S /data/3309/mysql.sock shutdown
【mysqld_safe】:相当于多了一个守护进程,mysqld挂了会自动把mysqld进程拉起来
1.可以读取的配置部分[mysqld],[server],[myslqd_safe], 为了兼容mysql_safe也会读取[safe_mysqld]中的配置
2.调用的mysqld是可以在[mysqld_safe]中用-mysqld, --mysqld-version
2.调用的mysqld是可以在[mysqld_safe]中用-mysqld, --mysqld-version
安装mysql
yum install gcc gcc-c++ bzip2 lsof openssl-devel -y
yum install autoconf ncurses-devel libaio-devel cmake -y
# hosts解析/有的小版本不做hosts解析会报错
[ "$(hostname -i | awk '{print $1}')" != "127.0.0.1" ] && sed -i "s@127.0.0.1.*localhost@&\n127.0.0.1 $(hostname)@g" /etc/hosts
useradd mysql -s /sbin/nologin -M
wget https://mirrors.linyaohong.com/src/mysql/mysql-5.5.62.tar.gz
tar zxf mysql-5.5.62.tar.gz
cd mysql-5.5.62
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.62 \
-DMYSQL_DATADIR=/application/mysql-5.5.62/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.62/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0 \
-DENABLE_DTRACE=0 \
-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'
make && make install
cd ..
ln -s /application/mysql-5.5.62/ /application/mysql
ln -s /application/mysql/bin/* /usr/local/bin/
安装3306实例(如果本机有3306实例,则从3307开始)
mkdir -p /data/3306/data
chown -R mysql:mysql /data/
wget -O /data/3306/my.cnf https://mirrors.linyaohong.com/conf/mysql/3306/my.cnf
wget -O /data/3306/mysql https://mirrors.linyaohong.com/conf/mysql/3306/mysql
# 手动创建错误日志(和配置文件的名字路劲要一直)
touch /data/3306/3306_error.log
chown mysql /data/3306/3306_error.log
chown mysql /data/3306/mysql
chmod 700 /data/3306/mysql
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3306/data/ --user=mysql
echo "/data/3306/mysql start" >>/etc/rc.local
chmod +x /etc/rc.local
/data/3307/mysql start
mysqladmin -u root password 111111 -S /data/3306/mysql.sock
mysql -uroot -p111111 -S /data/3307/mysql.sock -e "drop database test;"
mysql -uroot -p111111 -S /data/3306/mysql.sock -e "delete from mysql.user where host='::1';"
mysql -uroot -p111111 -S /data/3306/mysql.sock -e "delete from mysql.user where user='';"
安装3307实例
mkdir -p /data/3307/data
chown -R mysql:mysql /data/3307
wget -O /data/3307/my.cnf https://mirrors.linyaohong.com/conf/mysql/3307/my.cnf
wget -O /data/3307/mysql https://mirrors.linyaohong.com/conf/mysql/3307/mysql
# 手动创建错误日志(和配置文件的名字路劲要一直)
touch /data/3307/3307_error.log
chown mysql /data/3307/3307_error.log
chown mysql /data/3307/mysql
chmod 700 /data/3307/mysql
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3307/data/ --user=mysql
echo "/data/3307/mysql start" >>/etc/rc.local
chmod +x /etc/rc.local
/data/3307/mysql start
mysqladmin -u root password 111111 -S /data/3307/mysql.sock
mysql -uroot -p111111 -S /data/3307/mysql.sock -e "delete from mysql.user where host='::1';"
mysql -uroot -p111111 -S /data/3307/mysql.sock -e "delete from mysql.user where user='';"
mysql -uroot -p111111 -S /data/3307/mysql.sock -e "drop database test;"
安装3308实例
mkdir -p /data/3308/data
chown -R mysql:mysql /data/3308
wget -O /data/3308/my.cnf https://mirrors.linyaohong.com/conf/mysql/3308/my.cnf
wget -O /data/3308/mysql https://mirrors.linyaohong.com/conf/mysql/3308/mysql
# 手动创建错误日志(和配置文件的名字路劲要一直)
touch /data/3308/3308_error.log
chown mysql /data/3308/3308_error.log
chown mysql /data/3308/mysql
chmod 700 /data/3308/mysql
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/data/3308/data/ --user=mysql
echo "/data/3308/mysql start" >>/etc/rc.local
chmod +x /etc/rc.local
/data/3308/mysql start
mysqladmin -u root password 111111 -S /data/3308/mysql.sock
mysql -uroot -p111111 -S /data/3308/mysql.sock -e "delete from mysql.user where host='::1';"
mysql -uroot -p111111 -S /data/3308/mysql.sock -e "delete from mysql.user where user='';"
mysql -uroot -p111111 -S /data/3308/mysql.sock -e "drop database test;"
编译参数说明
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.62 # 安装目录
-DMYSQL_DATADIR=/application/mysql-5.5.62/data # 数据库存放目录
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.62/tmp/mysql.sock # Unix socket 文件路径
-DDEFAULT_CHARSET=utf8 # 使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci # 校验字符
-DWITH_EXTRA_CHARSETS=all # 安装所有扩展字符集
-DWITH_INNOBASE_STORAGE_ENGINE=1 # 安装 innodb 存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 # 安装 FEDERATED 存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 安装 blackhole 存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 # 除去对某种引擎的支持 EXAMPLE
-DWITH_PARTITION_STORAGE_ENGINE=1 # 安装数据库分区
-DWITH_MYISAM_STORAGE_ENGINE=1 # 安装 myisam 存储引擎
-DWITH_READLINE=1 # 快捷键功能
-DWITH_ZLIB=bundled # zlib库
-DWITH_SSL=bundled # 支持 SSL
-DENABLED_LOCAL_INFILE=1 # 启用加载本地数据/允许从本地导入数据
-DWITH_EMBEDDED_SERVER=1 # 嵌入式服务器
-DENABLE_DOWNLOADS=1
-DWITH_DEBUG=0 # 调试模式/默认禁用
-DENABLE_DTRACE=0 # 是否包括DTrace支持
-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc' # 使用ljemalloc优化MySQL内存管理(前提是需要安装)
# 单实例可以指定下配置文件目录
-DSYSCONFDIR=/etc #系统配置目录