MySQL5.7多实例安装
MySQL的安装可以使用一个安装程序设置多个MySQL实例,可以在一台服务器安装多个MySQL的独立实例,每个实例都有自己的端口,使用不同的端口并指定不同的数据文件可以将不同的数据库实例进行数据进行隔离。本篇我们使用mysql5.7作为例子,讲解一下安装步骤。 1、准备 安装文件: mirrors.sohu.com/mysql/MySQL-5.7/ 可以到网站下载安装程序,在Linux中使用wget可以获取到安装文件。 2、创建用户 useradd -M -s /sbin/nologin mysql [root@yy soft]# useradd -M -s /sbin/nologin mysql 使用 -M 不生成用户目录。 3、创建数据文件存放目录 这里我们建立两个实例数据存放目录分别为mysqldata1 和 mysq_data2 [root@yy soft]# mkdir -vp /home/root/mysqldata/mysql_data{1..2} mkdir: 已创建目录 "/home/root/mysqldata" mkdir: 已创建目录 "/home/root/mysqldata/mysql_data1" mkdir: 已创建目录 "/home/root/mysqldata/mysql_data2" 4、解压MySQL 将myslq文件解压到 /home/root/mysql 这个文件夹下面。 mysql文件夹是自己创建的存放安装文件的目录 5、修改 MySQL 二进制包目录的所属用户与所属组 chown root.mysql -R /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 6、修改 MySQL 多实例数据目录与 数据导入/导出专放目录的所属用户与所属组 chown mysql.mysql -R /home/root/mysqldata/mysql_data{1..2} 7、配置 MySQL 配置文件 配置文件存放到 /etc/my.cnf 内容如下: [mysqld_multi] mysqld = /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/bin/mysqld mysqladmin = /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/bin/mysqladmin log= /home/root/mysql/mysql_multi.log [mysqld1] #mysql的安装基准路径 basedir= /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 # 设置数据目录[多实例中一定要不同] datadir = /home/root/mysqldata/mysql_data1 # 设置sock存放文件名[多实例中一定要不同] socket = /home/root/mysqldata/mysql.sock1 # 设置监听开放端口[多实例中一定要不同] port = 3306 # 设置运行用户 user = mysql # 关闭监控 performance_schema = off # 设置innodb 缓存大小 innodb_buffer_pool_size = 512M # 设置监听IP地址 bind_address = 0.0.0.0 # 关闭DNS 反向解析 skip-name-resolve = 0 [mysqld2] basedir= /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 datadir = /home/root/mysqldata/mysql_data2 socket = /home/root/mysqldata/mysql.sock2 port = 3307 user = mysql performance_schema = off innodb_buffer_pool_size = 512M bind_address = 0.0.0.0 skip-name-resolve = 0 8、初始化实例 初始化实例1 [root@yy mysqldata]# /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/bin/mysqld --initialize --user=mysql --basedir=/home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 --datadir=/home/root/mysqldata/mysql_data1 ....... Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2018-07-11T05:56:45.507614Z 1 [Note] A temporary password is generated for root@localhost: ****** (此处以*代替) 初始化实例2 [root@yy mysqldata]# /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/bin/mysqld --initialize --user=mysql --basedir=/home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64 --datadir=/home/root/mysqldata/mysql_data2 ....... Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2018-07-11T05:56:45.507614Z 1 [Note] A temporary password is generated for root@localhost: ****** 初始化的时候日志会打印出对应的密码信息,为上面的黑体字所示。记住上面的密码后面要使用。 9、各实例开启SSL连接 暂不开启 10、复制多实例脚本到服务管理目录下 [ /etc/init.d/ ] [root@yy support-files]# cp /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/support-files/mysqld_multi.server /etc/init.d/mysqld_mul [root@yy support-files]# ls magic mysqld_multi.server mysql-log-rotate mysql.server [root@yy support-files]# cp /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/support-files/mysql.server /etc/init.d/mysqld 修改server中的路径,默认为/usr/local/mysql 路径,如果不修改启动会报错: sed -i 's#basedir=/usr/local/mysql#basedir=/home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/#g' /etc/init.d/mysqld_multi.server sed -i 's#bindir=/usr/local/mysql/bin#bindir=/home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/bin#g' /etc/init.d/mysqld_multi.server 11、添加脚本执行权限并添加到启动服务中 [root@yy home]# chmod +x /etc/init.d/mysqld_multi [root@yy home]# chkconfig --add mysqld_multi 12、启动测试 /etc/init.d/mysqld_multi report /etc/init.d/mysqld_multi: /home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/bin/mysqld_multi: /usr/bin/perl: 坏的解释器: 没有那个文件或目录 执行: yum install perl gcc kernel-devel 再次启动正常 13、加入mysql bin 到PATH中 修改 /etc/profile 中文件添加如下内容: MYSQL_BIN=/home/root/mysql/mysql-5.7.18-linux-glibc2.5-x86_64/bin PATH=$PATH:$MYSQL_BIN 14、查看集群状态 [root@yy bin]# /etc/init.d/mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld1 is not running MySQL server from group: mysqld2 is not running 可以看到还没有启动 13、启动多个实例 /etc/init.d/mysqld_multi start 日志报错: 不能创建socket ,将/etc/my.cnf的scoket文件指定到temp文件下。 再次启动查询进程发现正常安装mysql,有两个mysql实例在运行。 14、登录服务器实例 此时两个实例已经安装完成,需要使用上面步骤(初始化)中随机生成的密码进行登录: 实例1操作: mysql -p3306 -uroot -p'******' -S /tmp/mysql.sock1 修改密码: alter user 'root'@'localhost' identified by 'root123456'; 设置root用户登录权限: mysql>use mysql; mysql>update user set host = '%' where user ='root'; mysql>flush privileges; mysql>select 'host','user' from user where user='root'; mysql>quit 实例2操作: 实例1相同,只有登录密码和socket文件不同: mysql -p3306 -uroot -p'******' -S /tmp/mysql.sock2 15、此时再用root远程登录可成功登录,两个实例。 在登录的时候注意修改默认端口号,实例1是3306,实例2是3307端口。 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |