【mysql】mysql使用

1、报错及解决

01、zlib1g (= 1:1.2.8.dfsg-2ubuntu4) but 1:1.2.8.dfsg-2ubuntu4.1 is to be installed

在安装mysql时:
  1. sudo apt-get install mysql-server
  2. apt-get isntall mysql-client
  3.  sudo apt-get install libmysqlclient-dev
第三步时:某个依赖包安装不上
出现:
zlib1g-dev : Depends: zlib1g (= 1:1.2.8.dfsg-2ubuntu4) but 1:1.2.8.dfsg-2ubuntu4.1 is to be installed
E: Unable to correct problems, you have held broken packages.
解决:卸载gcc、g++, 更换系统原始的软件源, 安装gcc、g++, 然后更换回现在的软件源重新安装libmysqlclient-dev
# 可以使用 ypfboy/mydocker:qh_ubuntu_gcc中的源

2、docker 启动mysql

01、docker配置 mysql8 主从备份

0、
docker可以从同一个的镜像中启动, 所以数据库中的数据是一致的, 如果从服务器中没有主服务器的数据, 需要配分主服务
器中mysql的数据到从服务器中。

备份主服务器数据:
mysqldump -uroot -p --all-databases --lock-all-tables > ~/master_db.sql
# -u : 用户名
# -p : 示密码
# --all-databases : 导出所有数据库
# --lock-all-tables : 执行操作时锁住所有表,防止操作时有数据修改
# ~/master_db.sql : 导出的备份数据(sql文件)位置,可自己指定

导入到从服务器中:
mysql -uroot -pmysql -h127.0.0.1 --port=8306 < ~/master_db.sql
1、配置主服务器master的/etc/mysql/mysql.conf.d/mysqld.cnf
配置 server-id、 log_bin 字段, 如下:

在这里插入图片描述

2、在主服务器master中配置用于备份的用户
# 在master数据库中创建用于备份的用户
create user mysqlBackup identified with mysql_native_password by "MyUbuntu20.04";
# 给用户增加slave权限
grant replication slave on *.* to mysqlBackup;
# 刷新权限
flush privileges;
3、获取主服务器master的二进制日志信息
# 命令
show master status;
# File为使用的日志文件名字,Position为使用的文件位置,这两个参数须记下,配置从服务器时会用到。

在这里插入图片描述

4、配置从服务器slave的/etc/mysql/mysql.conf.d/mysqld.cnf
配置 server-id、 log_bin 字段, 和 slave一样
5、在从服务器slave中配置master
# 在slave的配置master
change master to master_host="106.14.173.166", master_user="mysqlBackup", master_password="MyUbuntu20.04",master_port=10000, master_log_file="mysql-bin.000001", master_log_pos=665;
master_host:主服务器的ip地址
master_log_file: 前面查询到的主服务器日志文件名(在master中执行 show master status 查看)
aster_log_pos: 前面查询到的主服务器日志文件位置(在master中执行 show master status 查看)
master_port : 主服务器中mysql使用的端口
6、启动从服务器slave备份
# 启动
start slave;
# 查看状态
show slave status \G;

在这里插入图片描述

7、问题及解决
01、Slave_IO_Running = NO
查看错误日志 vi /var/log/mysqld.log,
报错:Fatal error: The slave I/O thread stopsbecause master and slave have equal MySQL server UUIDs; these UUIDs must 		bedifferent for replication to work.”
由于容器是从一个镜像生成的,索引UUID是一样的, 查看/var/lib/mysql/auto.cnf, 发现UUID一样, 导致了Slave_IO_Running = NO

解决: 删除/var/lib/mysql/auto.cnf, 重启容器后/var/lib/mysql/auto.cnf会自动重新生成一个。

02、docker启动mysql问题及解决

1、使用pymysql连接mysql被拒绝连接
重启mysql服务: /etc/init.d/mysql restart
或
重启docker服务: docker restart flask_mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值