前言:
此时同学们对“数据库有几个实例”可能比较关切,姐妹们都需要了解一些“数据库有几个实例”的相关知识。那么小编同时在网上收集了一些关于“数据库有几个实例””的相关资讯,希望兄弟们能喜欢,同学们一起来学习一下吧!所谓的数据库多实例,就是在一台服务器上面安装多个数据库,完成主从备份等操作。其实现思维我先大体讲解一下,让大家有更加清晰的思路来完成。
你可以理解为用一台数据库,启动不同的配置文件,基于端口实现数据库多实例。虽然这个解释不对(并不是误人子弟,只是单纯地想帮助大家更好地理解)。
大致分为六步:1、检查。 2、规划目录、创建用户。 3、安装 。4、初始化。5、登陆并修改密码
第一步:检查
首先先检查有没有mariadb 、有就全部删除
[root@localhost ~]# yum list installed | grep mariadbmariadb.x86_64 1:5.5.68-1.el7 @base mariadb-libs.x86_64 1:5.5.68-1.el7 @base mariadb-server.x86_64 1:5.5.68-1.el7 @base [root@localhost ~]# yum remove -y mariadb.x86_64 mariadb-libs.x86_64 mariadb-server.x86_64
然后在看一下依赖有没有安装好
[root@localhost ~]# yum list installed | grep autoconfautoconf.noarch 2.69-11.el7 @base [root@localhost ~]# yum list installed | grep ncursesncurses.x86_64 5.9-14.20130511.el7_4 @base ncurses-base.noarch 5.9-14.20130511.el7_4 @base ncurses-devel.x86_64 5.9-14.20130511.el7_4 @base ncurses-libs.x86_64 5.9-14.20130511.el7_4 @base
有这些代表没问题了,如果没有则需要下载。下载命令如下
yum install -y autoconf ncurses第二步:规划目录 、创建用户
规划目录
这一步相对来说较简单,因为没有严格的规定,我是这样创建的目录, 初学者最好和我创建相同的目录,以防后面操作不注意导致报错
[root@localhost ~]# tree /data/data├── mysql3306│ ├── binlog│ └── data└── mysql3307 ├── binlog └── data [root@localhost ~]# mkdir -p /data/mysql{3306..3307}/{data,binlog} ///这是创建目录的命令
目录详解: 这是两个数据库的目录,如果需要多个可以自己添加。我在根目录下面创建了data目录,又在data目录下创建了属于每个数据库的目录,以端口号区分,比如默认数据库是3306端口,第二个数据库我想让他走3307端口,以此类推。
在每个数据库的目录下面我还分了data目录和binlog二进制目录,data目录是初始化的时候放很多初始化文件的目录,比如error等等(后面就知道了)。那binlog就是放binlog的目录(显而易见)。
创建用户
创建一个mysql用户和用户组,并给目录相应的用户权限
groupadd mysqluseradd -g mysql mysqlchown -R mysql.mysql /data/mysql330{6..7}第三步:安装
具体安装数据库详情在我的另一篇《二进制安装数据库》此处就不多解释了,如果有不懂的可以自己看一下
首先解压,移动mysql到/usr/local/下并命名为mysql
[root@localhost opt]# tar zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz //解压[root@localhost opt]# mv mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql //移动
编辑my.cnf(这是3306数据库的配置文件),如果没有/etc/my.cnf这个文件,就把my.cnf.rpmsave复制一份 修改如下
[client]port = 3306socket = /tmp/mysql3306.sock[mysql]no-auto-rehash[mysqld]user = mysqlbasedir = /usr/local/mysqldatadir = /data/mysql3306/datalog_bin=/data/mysql3306/binlog/binlogbinlog_format=rowport = 3306socket = /tmp/mysql3306.socklog-error = error.logslow_query_log_file = slow.logcharacter-set-server = utf8open_files_limit = 65535max_connections = 100max_connect_errors = 100000lower_case_table_names =1server_id=1
再把/etc/my.cnf 复制一份 /etc/my3307.cnf 并修改为如下
[client]port = 3307socket = /tmp/mysql3307.sock[mysql]no-auto-rehash[mysqld]user = mysqlbasedir = /usr/local/mysqldatadir = /data/mysql3307/datalog_bin=/data/mysql3307/binlog/binlogbinlog_format=rowport = 3307socket = /tmp/mysql3307.socklog-error = error.logslow_query_log_file = slow.logcharacter-set-server = utf8open_files_limit = 65535max_connections = 100max_connect_errors = 100000lower_case_table_names =1server_id=2
然后给目录mysql权限
[root@localhost opt]# chown -R mysql.mysql /data/mysql330{6..7}/第四步:初始化、启动数据库
分别初始化两个数据库
/usr/local/mysql/bin/mysqld --initialize //初始化3306数据库/usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf --datadir=/data/mysql3307/data/ --initialize //初始化3307数据库
初始化完成之后你可以看到,在/data/mysql3306或3307的data目录里有很多初始化文件,这就代表没什么问题了,如果有具体问题还需要自己排查一下
[root@localhost tmp]# ll /data/mysql3307/data/total 122960-rw-r-----. 1 mysql mysql 56 Jul 29 07:00 auto.cnf-rw-------. 1 mysql mysql 1680 Jul 29 07:00 ca-key.pem-rw-r--r--. 1 mysql mysql 1112 Jul 29 07:00 ca.pem-rw-r--r--. 1 mysql mysql 1112 Jul 29 07:00 client-cert.pem-rw-------. 1 mysql mysql 1680 Jul 29 07:00 client-key.pem-rw-r-----. 1 mysql mysql 4653 Aug 3 08:48 error.log-rw-r-----. 1 mysql mysql 431 Jul 29 07:00 ib_buffer_pool-rw-r-----. 1 mysql mysql 12582912 Aug 3 08:48 ibdata1-rw-r-----. 1 mysql mysql 50331648 Aug 3 08:48 ib_logfile0-rw-r-----. 1 mysql mysql 50331648 Jul 29 07:00 ib_logfile1-rw-r-----. 1 mysql mysql 12582912 Aug 3 08:48 ibtmp1-rw-r-----. 1 mysql mysql 5 Aug 3 08:48 localhost.piddrwxr-x---. 2 mysql mysql 4096 Jul 29 07:00 mysqldrwxr-x---. 2 mysql mysql 8192 Jul 29 07:00 performance_schema-rw-------. 1 mysql mysql 1680 Jul 29 07:00 private_key.pem-rw-r--r--. 1 mysql mysql 452 Jul 29 07:00 public_key.pem-rw-r--r--. 1 mysql mysql 1112 Jul 29 07:00 server-cert.pem-rw-------. 1 mysql mysql 1680 Jul 29 07:00 server-key.pemdrwxr-x---. 2 mysql mysql 8192 Jul 29 07:00 sys
启动数据库
粘贴mysql启动文件,并添加环境
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqlecho "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile source /etc/profile
然后依次启动数据库
service mysql start //启动3306数据库/usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf & //多实例启动 & 代表后台启动,如果不输入&会一直卡住,需要从新连接scrt
执行完毕查看端口,是否启动成功,可以看到3306和3307端口都已成功开启
[root@localhost ~]# ss -nl | grep 330u_str LISTEN 0 70 /tmp/mysql3306.sock 21724 * 0 u_str LISTEN 0 70 /tmp/mysql3307.sock 21750 * 0 tcp LISTEN 0 70 [::]:3306 [::]:* tcp LISTEN 0 70 [::]:3307 [::]:*
再查看一下/tmp目录下是否有sock文件,可以看到/tmp目录下面有每个数据库的sock文件,sock文件是数据库启动时生成的文件。
[root@localhost ~]# ll /tmp/total 12-rwx------. 1 root root 827 Jul 28 08:36 ks-script-06Uw1Psrwxrwxrwx. 1 mysql mysql 0 Aug 3 09:12 mysql3306.sock-rw-------. 1 mysql mysql 5 Aug 3 09:12 mysql3306.sock.locksrwxrwxrwx. 1 mysql mysql 0 Aug 3 09:12 mysql3307.sock-rw-------. 1 mysql mysql 5 Aug 3 09:12 mysql3307.sock.lock-rw-------. 1 root root 0 Jul 28 08:29 yum.log
这样就启动成功了!
第五步:登陆,修改密码
数据库的初始密码都在error.log日志里面,通过命令可以查看,
[root@localhost ~]# cat /data/mysql3306/data/error.log | grep 'temporary password'2021-07-29T10:55:57.095657Z 1 [Note] A temporary password is generated for root@localhost: PM/k9=%?brE&
PM/k9=%?brE&就是3306数据库的密码,用它来登陆
mysql -uroot -p'PM/k9=%?brE&' -S /tmp/mysql3306.sock -P3306 //登陆3306 mysql -uroot -p'PRz=*9e0uVwMY' -S /tmp/mysql3307.sock -P3307 //登陆3307
注意:// 密码一定要用引号括起来 -S(大写)后面跟的是sock路径,这个是必须的! -P(大写)跟的是端口号,这个可写可不写。
登陆数据库成功以后一定要修改密码,否则不能对数据库进行操作
mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改密码
alter user user() identified by '000000'; //必须用这条命令,不能用update修改
修改完了再重新登陆一遍就OK了
如果有问题欢迎在评论区留言
标签: #数据库有几个实例 #数据库的实例是什么意思 #数据库服务器实例 #数据库服务器实例名