赞
踩
当业务繁多的时候,会不断的给单个mysql数据库进行读写操作,为了能让数据库减轻压力,我们会实现读写分裂,而读写分离的基础是基于主从复制。主数据库做写的操作,而从数据库做读的操作。
Mysql是默认支持主从复制的,不需要其他技术。
直接打开当前连接下载:MySQL :: Begin Your Download
当前MySQl的版本号为8.0,下载完解压之后,我们来看一下目录
这里是没有配置文件的。
所以我们需要手动去创建配置文件。my.ini
里面对应的参数为:
此时,现在只是安装前对所需要的材料进行准备,还不是真正的安装。
在mysql的bin目录下执行mysqld --initialize --console
该命令主要是对数据库进行一个初始化操作。此时,会显示最原始的账户以及密码:
然后再执行mysqld --install 服务名,这里的服务名可写可不写,默认名称为mysql,只是为了之后在服务上面进行区分那一个数据库而已。此时mysql安装完毕!
net start mysql
net stop mysql
在bin目录下使用mysql -u root -p 然后输入密码就进入mysql服务里面去了。
首先我们需要知道的是docker的mysql容器内部文件对应的位置:
log日志文件:/var/log/mysql————————日志文件存放点
conf配置文件:/etc/mysql——————————配置文件存放点。
/etc/mysql/my.cnf————————主配置文件!
/etc/mysql/conf.d ————————配置文件目录,可以更加精细化配置
/etc/mysql/mysql.conf.d ————————配置文件目录,可以更加精细化配置
data数据文件:/var/lib/mysql——————数据库的数据表存放点。
所以我们需要把宿主机文档与其挂载在一起,从而获得对应的文档信息。
我们此时来看以下宿主机的文档,此时data的数据为:
这里其实就是docker的mysql容器里面的信息!那为很么conf文件夹是空的咧?因为mysql原本启动的时候也是空的。所以就是空的。我们需要往里面放入配置文件。
而配置文件应该是放在mysql/conf.d(这里本来也是空的,其实是两个文件配置目录里面的信息结合在一起变为my.cnf),此时我们需要把宿主机的挂载卷放在/etc/mysql/conf.d上面去。
此时只需要修改宿主机里面的hmy.cnf就可以了。
docker里面的mysql是开启了,但是宿主机测试连接的时候连接不上。出项下列情况
原因: 新旧版本mysql加密方式不同导致Navicat无法连接mysql
解决方案:
(1)进入mysql容器内部,查询当前mysql的用户名以及用户密码:
select host,user,plugin,authentication_string from mysql.user;
注意:host为%的话,也就是任意的地址都可以连接到mysql
(2)此时就需要修改对应的转换类型:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
其实这里是转换root的%的密码的数据类型为字符串类型。
然后就连接得上了。
首先部署好两个mysql容器先,分别是mysql-master(7001),mysql-slave(7002)
分别修改对应的配置文件(宿主机里面的,因为使用了挂载卷。)
然后docker重启mysql容器。
GRANT REPLICATION SLAVE ON *.* to 'xiaoming'@'%' identified by 'Root@123456';
我们来看一下那里出项了问题:
因为我们是使用docker,并且我们指定的端口位置是7001.所以我们需要在创建master的时候来把端口号也修改上。
一定要全部写全,不能单独添加,单独添加的话,其他参数会恢复为默认数据。
再次查看状态:
现在就可以了。
测试是否成功,我们使用navicat来在主表上面进行表格创建,查看以下是否同步!
完成同步!
新的技术Sharding-JDBC,这个是使用客户端直连数据库,然后再返回数据给sprinboot。
也是通过调整配置文件来规定主库是那个,从库是那个:
开启如果项目中存放同名的bean,后定义的bean会覆盖先定义的bean。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。