Mysql共享锁
死锁问题 共享间隙锁引起的死锁 如何产生共享间隙锁 何时产生的隐式锁转换问题现象在一个事务内只会锁一行的数据,没有锁多行数据才会出现的顺序问题,但是会偶尔报个Deadlock事务内sql执行顺序...
2024.11.20一、mysql多实例介绍
1.1概念
mysql多实例就是在一台物理主机上运行多个数据库服务
1.2作用
节约运维成本,提高硬件利用率
1.3 原理
通过安装支持mysql多实例的软件包,实现在一台机器上开启多个不同的服务端口(如3306,3307);
运行多个mysql服务进程,这些进程通过不同的socket监听不同的服务端口来提供各自的服务,在提供服务时,多实例mysql在逻辑上是各自独立的,多个实例的本身是根据配置文件对应的设定值,来获得服务器的相关硬件资源多少;
启动服务都是通过软件实现各自独立启动的。
二、搭建mysql多实例
2.1 总搭建步骤:
1)安装支持多实例服务的软件包
2)修改主配置文件
3)根据主配置文件做相应的设置
4)初始化授权库
5)启动服务
6)客户端访问验证
2.2安装支持多实例服务的软件包
1)安装以及解压软件:mysql-5.7.20-linux-glibc2.12
mysql下载地址: https://dev.mysql.com/downloads/mysql/, 选择linux通用版本: Linux - Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive
[root@proxy 08.dba-1]# tar -zxf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@proxy 08.dba-1]# ls mysql-5.7.20-linux-glibc2.12-x86_64
bin COPYING docs include lib man README share support-files
//主要的执行程序就放在bin目录下
2)修改目录名
[root@proxy 08.dba-1]# mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql
//由于软件包已编译安装好,因此实际上只需要解压即可以使用,修改目录名是为了更方便我们辨识,不是必要操作;
3)修改PATH变量以方便执行相关命令
[root@proxy 08.dba-1]# echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
[root@proxy ~]# source /etc/profile
[root@proxy ~]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
将目录/usr/local/mysql/bin加入到bash路径,使得执行软件命令时无需输入绝对路径,非必要操作;
2.3修改主配置文件
1)备份配置文件
[root@proxy ~]# mv /etc/my.cnf /etc/my.cnf.bak
2)修改配置文件
[root@proxy ~]# vim /etc/my.cnf
//自行建立配置文件
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user=root
//定义启用多实例
//mysqld:指定进程文件的路径为mysqld_safe
//mysqladmin:指定管理命令路径
//user:指定调用进程的用户
[mysqld1]
port=3307
datadir=/dir3307
socket=/dir3307/mysql.sock
pid-file=/dir3307/mysql.pid
log-error=/dir3307/mysql.log
//实例进程名称为mysqld1,1表示实例名称
//port:定义端口号
//datadir:数据库目录,要手动创建
//socket:定义socket文件的路径和名称
//进程pid号文件位置
//错误日志位置
[mysqld2]
port=3308
datadir=/dir3308
socket=/dir3308/mysql.sock
pid-file=/dir3308/mysql.pid
log-error=/dir3308/mysql.log
//定义实例2
3)创建对应的数据库目录
[root@proxy ~]# mkdir /dir3307 /dir3308
2.4分别初始化授权库
1)[root@proxy ~]# mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/dir3307 --initialize
2018-06-29T03:17:02.027367Z 1 [Note] A temporary password is generated for root@localhost: 0?:dBy.Bhqiz
[root@proxy ~]# mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/dir3308 --initialize
2018-06-29T02:22:41.935900Z 1 [Note] A temporary password is generated for root@localhost: Sx#J?LVRl1MA
//结果会生成初始密码,用于一会首次登陆数据库
2.5启动服务
1)起服务,查状态
[root@proxy ~]# mysqld_multi start 1
[root@proxy ~]# mysqld_multi start 2
[root@proxy ~]# netstat -ntulp | grep mysql
2)通过初始密码登陆数据库,修改管理员密码
[root@proxy ~]# mysql -uroot -p‘0?:dBy.Bhqiz‘ -S /dir3307/mysql.sock
//登陆时需要指定sock文件以区分是登陆哪个数据库
mysql> alter user user() identified by ‘123456‘;
[root@proxy ~]# mysql -uroot -p‘123456‘ -S /dir3307/mysql.sock
//重新登陆确认密码修改成功
[root@proxy ~]# mysql -uroot -p‘Sx#J?LVRl1MA‘ -S /dir3308/mysql.sock
mysql> alter user user() identified by ‘123456‘;
[root@proxy ~]# mysql -uroot -p‘123456‘ -S /dir3308/mysql.sock
2.6客户端访问验证
1)数据库授权客户端访问用户
mysql> grant all on *.* to client@‘%‘ identified by ‘123456‘;
2)客户端通过指定不同的端口访问
[root@host50 ~]# mysql -h192.168.4.15 -uclient -p123456 -P3307
2.7停止服务
[root@proxy ~]# mysqld_multi --user=root --password=123456 stop 1
[root@proxy ~]# mysqld_multi --user=root --password=123456 stop 2
//密码为登陆数据库密码,非系统管理员密码
[root@proxy ~]# ss -ntulp | grep mysqld
2.8注意事项
1)关于初始化授权库:
-mysqld --user=mysql --basedir=软件安装目录 --datadir=要初始化的数据库目录 --initialize
//由于本人之前已安装过其他版本的mysql,因此用户mysql已存在,没有的朋友可自己创建用户并设置初始化数据库目录所有者为mysql;
//初始化完成后在最后一行会显示出初始密码,若忘记了可以重新初始化生成一次,当密码显示出来后,并不代表初始化完成,等到密令行重新出现才算完成
//初始化完成后可以看到数据库的所有者为mysql用户
//初始化成功后,可以看到数据库目录下有8个文件:
auto.cnf ibdata1 ib_logfile1 sys
ib_buffer_pool ib_logfile0 mysql performance_schema
2)关于启动服务:
//服务启动成功多出5个文件:
ibtmp1 mysql.log mysql.pid mysql.sock mysql.sock.lock
//初始化没报错,但服务启动没成功,则会出现.err报错日志文件,根据提示信息排错;
3)关于命令
本实例中执行的命令均是在程序添加到PATH路径下再执行的,若没添加要使用绝对路径执行命令;
死锁问题 共享间隙锁引起的死锁 如何产生共享间隙锁 何时产生的隐式锁转换问题现象在一个事务内只会锁一行的数据,没有锁多行数据才会出现的顺序问题,但是会偶尔报个Deadlock事务内sql执行顺序...
2024.11.20简单数据查询操作增删改查是数据表操作的重要组成部分,尤其是数据表的查询更是数据库与各类应用交互的频繁操作之一。本文课主要介绍简单数据查询语句。查询语句基本语法查询语句是实现数据查询的SQL语句,用于实...
2024.11.21),获得连接库需用到的5个参数,在_init_初始类属性时,建立连接,代码如下:import pymysqlfrom configparser import ConfigParserclass Mys...
2024.11.22grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘password‘;flush privileges;执行后就可以了。常用的外网工具。
2024.11.21当数据库服务器数量有限时,为了有效利用单台服务器资源,在服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。单台服务器部署多个MySQL实例,这里以MySQL5.7为例,部署步骤如下:1、 下载...
2024.11.21