Docker部署mysql8.0.31
- 创建本地mysql配置文件
mkdir -p /opt/mysql/log
mkdir -p /opt/mysql/data
mkdir -p /opt/mysql/conf
cd /opt/mysql/conf
touch my.config
[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
#设置3306端口
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600
secure_file_priv=/var/lib/mysql
[client]
default-character-set=UTF8MB4
- 拉取镜像mysql:8.0.31
docker pull mysql:8.0.31
docker images
- 运行镜像
docker run -d -p 3306:3306 --restart=always --privileged=true -v /opt/mysql/log:/var/log/mysql -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:8.0.31
- 进入容器
docker ps
docker exec -it 9abe42c59a10 /bin/bash
mysql -u root -p
show databases;
SELECT VERSION();
五、mysql数据库开发远程访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
从 MySQL 8.0 开始,mysql_native_password 插件已经被弃用,默认采用 caching_sha2_password 插件。
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'root';
--privileged 允许挂载数据卷,默认是读写权限rw
-d:以后台方式运行实例,(退出容器mysql依旧运行)
配置端口映射:
-p 3306:3306 指定宿主机器3306 :docker容器3306端口 映射。
mysql数据卷挂载解读:
1.日志文件挂载 :-v /data/dockerData/mysql/logs:/logs ()
将容器中的日志文件夹 /var/log/mysql 挂载到 宿主机对应的 /mydata/mysql 文件夹中。
2.数据文件挂载: -v /data/dockerData/mysql/data:/var/lib/mysql
将容器中的数据文件夹 /var/lib/mysql 挂载到宿主机对应的 /mydata/mysql/data 文件夹中。
3.mysql 配置文件挂载:-v /data/dockerData/mysql/conf/my.config:/etc/mysql/my.config
将容器的配置文件夹etc/mysql/my.config挂载到宿主机对应的 /data/dockerData/mysql/conf/my.config 文件夹中。
设置数据库root的密码:
MYSQL_ROOT_PASSWORD=数据库密码
设置mysql容器名称:
--name mysql5.7
c20987f18b13 :指定用这个镜像来创建运行实例。
所遇问题
ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
SHOW PLUGINS;
#安装插件
INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
更改用户的认证方法
ALTER USER 'root'@'%' IDENTIFIED WITH auth_socket;
替换root为你的实际用户名
然后我们在重新执行ALTER USER 'root'@'%' IDENTIFIED WITH auth_socket BY '123456'
Docker部署DBSyncer
DBSyncer是一款开源的数据同步中间件,它具有以下优点:
1. **多数据源支持**:DBSyncer支持广泛的数据库和数据源,包括MySQL、Oracle、SQL Server、PostgreSQL、Elasticsearch、Kafka、文件系统等,能够满足多种不同数据源之间的同步需求。
2. **自定义同步逻辑**:通过插件机制和自定义转换业务功能,DBSyncer允许用户根据自己的特定需求编写同步逻辑,增强了工具的灵活性和适用性。
3. **实时监控**:提供实时的同步状态监控和统计功能,用户可以实时查看同步进度、结果、日志等信息,便于监控和问题诊断。
4. **灵活的部署方式**:支持通过下载安装包、使用Docker容器或手动编译等多种方式进行部署,方便用户根据自己的环境和需求进行选择。
5. **高性能**:DBSyncer在设计中注重性能,能够高效地处理大量数据的同步任务。
6. **易于配置**:提供了丰富的配置选项和图形化界面,使得用户能够轻松配置数据同步任务。
7. **增量同步与全量同步**:支持增量同步和全量同步,用户可以根据数据变化和业务需求选择合适的同步策略。
8. **跨平台兼容性**:基于Java开发,可以在主流的操作系统平台上运行,如Windows、Linux、macOS等。
9. **开源社区支持**:作为一个开源项目,DBSyncer可以获得社区的支持和贡献,不断得到改进和完善。
10. **成本效益**:作为开源软件,DBSyncer可以免费使用,降低了企业的使用成本。
然而,DBSyncer也存在一些不足之处:
开源社区较小:相较于其他一些知名数据库中间件,DBSyncer的开源社区相对较小,活跃度和贡献度相对较低,这可能会影响到其后续的发展和维护。
技术门槛较高:DBSyncer的使用和配置相对较为复杂,需要一定的技术能力和经验,对于一些技术新手可能存在一定的学习门槛。
稳定性有待提高:在某些场景下,DBSyncer可能会出现一些稳定性问题,例如内存占用过高、处理速度较慢等,这可能会影响到数据同步的效率和可靠性。
功能有待进一步完善:虽然DBSyncer已经具备一些基本的数据同步功能,但在某些高级功能方面还有待进一步完善,例如数据校验、断点续传等。
# 从Docker Hub拉取(以最新镜像为例,具体镜像名和标签可能有所不同)
docker pull crazylife/dbsyncer-web:latest
# 或者从阿里云镜像仓库拉取(推荐)
docker pull registry.cn-hangzhou.aliyuncs.com/xhtb/dbsyncer:latest
# 或者
docker pull registry.cn-hangzhou.aliyuncs.com/lifewang/dbsyncer:latest
1、添加连接
2、配置数据库同步