龙空技术网

数据库多实例

秃头旺仔 614

前言:

此时同学们对“数据库有几个实例”可能比较关切,姐妹们都需要了解一些“数据库有几个实例”的相关知识。那么小编同时在网上收集了一些关于“数据库有几个实例””的相关资讯,希望兄弟们能喜欢,同学们一起来学习一下吧!

所谓的数据库多实例,就是在一台服务器上面安装多个数据库,完成主从备份等操作。其实现思维我先大体讲解一下,让大家有更加清晰的思路来完成。

你可以理解为用一台数据库,启动不同的配置文件,基于端口实现数据库多实例。虽然这个解释不对(并不是误人子弟,只是单纯地想帮助大家更好地理解)。

大致分为六步: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了

如果有问题欢迎在评论区留言

标签: #数据库有几个实例 #数据库的实例是什么意思 #数据库服务器实例 #数据库服务器实例名