文章目录
- 安装mysql
- 配置master
- slave配置
- 问题
安装mysql
- 先安装mysql
apt-get update; - 启动mysql
sudo apt-get install mysql-server - 启动mysql 服务 sudo service mysql start
- 查看mysql 服务
sudo service mysql status - 设置mysql 开机自启
sudo systemctl enable mysql - 登录mysql
mysql -u root -p - 查询mysql 密码 (第一次默认没有密码 直接回车)
sudo tail /var/log/mysql.log - 设置root账号密码
usr mysql; # 进入mysqlselect host ,user,authentication_string from user;# 查看root用户数据alter user 'root'@'localhost' identified with mysql_native_password by 'joint2023';# 为root账号赋权flush privileges;# 刷新权限exit;退出
- 设置远程访问
- 设置账号权限
use mysql;# 进入mysqlupdate user set host ='%' where user = 'root' and host ='localhost';# 设置登录ip为% 通配符,取消ip登录限制flush privileges;# 刷新权限select host ,user,authentication_string from user ;# 查看数据情况exit;# 退出
- 修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf- 注释掉 bind-address 和 mysql-bind-address
- 重启mysql
service mysql restart;# 重启mysql
- 设置账号权限
- 防火墙开启3306端口
sudo ufw allow 3306/tcp
配置master
-
vim /etc/mysql/mysql.conf.d/mysqld.cnf -
[mysqld] ... # 开启二进制日志(必须) log-bin = mysql-bin # MySQL服务ID,保证整个集群环境中唯一,默认为1(必须) server-id = 1 # 二进制日志格式,默认ROW(可选) binlog_format = ROW # 忽略的数据,不需要同步的数据库 # binlog-ignore-db = mysql # 指定同步的数据库 binlog-do-db = ects- binlog-ignore-db 和binlog-do-db 不指定 默认同步所有
-
重启mysql
systemctl restart mysql -
登录mysql 创建远程链接账号,授权 主从复制权限
create user 'jointbackup'@'%' identified with mysql_native_password by 'joint2023 ;' # 创建用户和设置密码grank replication slave on *.* to 'jointbackup'@'%'; # 分配主从权限
-
查看二进制日志坐标
show master status;

字段 说明 File 当前正在写入二进制日志文件名 Position 当前正在写入二进制日志文件位置 Binlog_Do_DB 指定需要写入二进制日志的数据库名 Binlog_Ignore_DB 指定不需要写入二进制日志的数据库名
slave配置
-
修改配置文件
-
vim /etc/mysql/mysql.conf.d/mysqld.cnf -
[mysqld] ... # 开启二进制日志(必须) log-bin = mysql-bin # MySQL服务ID,保证整个集群环境中唯一,默认为1(必须) server-id = 2 # 二进制日志格式,默认ROW(可选) binlog_format = ROW # 是否只读,1代表只读,0代表读写 (root 除外) read-only = 1
-
-
重启mysql服务
systemctl restart mysql -
设置主从配置
MySQL8.0.23之前的版本,执行如下SQL语句:change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;MySQL8.0.23之后的版本,执行如下SQL语句:change replication source to source_host='xxx.xxx.xxx.xxx',source_user='xxx',source_password='xxx',source_log_file='xxx',source_log_pos=xxx;
-
开启同步操作
-
# 8.0.22之后 show replica status; # 8.0.22之前 show slave status;
-
-
问题
- 查询报错 no qurey specified 检查SLAVE_SQL_Running 是no
- 解决:查询
show replica status - 我的Last_SQL_Error 是
Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'ANONYMOUS' at source log mysql-bin.000001, end_log_pos 1170. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any. - 查询日志
tail -f /var/log/mysql/error.log报错unknown database ‘ects’是因为我的从数据库上没先创建这个数据库 - 创建库和表结构后

