MySQL-环境搭建
wenking 7/11/2023 MySQL
# mariadb 安装
yum -y install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
1
2
3
4
5
6
2
3
4
5
6
# 主从复制
修改mysql配置文件 /etc/my.cnf
[mysqld]
# 默认为127.0.0.1 环回监听,不能远程连接, 需要修改监听地址
bind-address=192.168.1.133
log_bin=mysql-bin
server_id=1
binlog_format="MIXED"
# 从库在做 中继日志 进行数据恢复的时候,插入数据可能已经存在,因此会报错,我们在该处设置为跳过主键重复错误
slave_skip_errors=1062
expire_logs_days=30
max_binlog_size=1G
binlog-ignore=mysql #忽略mysql库
binlog-ignore=information_schema #忽略information_schema库
replicate-do-db=test #要同步的数据库,默认所有库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
重启主库,并创建从库复制用户
systemctl restart mariadb
create user 'slaver'@'%' IDENTIFIED BY '123';
GRANT REPLICATION SLAVE ON *.* TO 'slaver'@'%';
flush privileges;
show master status;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
重启从库,并跟谁主库
show slave status;
CHANGE MASTER TO
MASTER_HOST='主机的IP地址',
MASTER_USER='主机用户名',
MASTER_PASSWORD='主机用户名的密码',
MASTER_LOG_FILE='mysql-bin.具体数字',
MASTER_LOG_POS=具体值;
CHANGE MASTER TO
MASTER_HOST='192.168.1.128',
MASTER_USER='slaver',
MASTER_PASSWORD='123',
MASTER_LOG_FILE='mysql-bin.000007',
# 可选MASTER_LOG_POS=具体值;
start slave;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
从库在同步过程中可能出现主键冲突的情况
这是因为从库执行 relay_log 时候有一部分数据已经在数据库中了,我们需要忽略这部分内容,可以手动忽略
# 如果同步过程中有其他错误, 我们需要进行排查, 如果认为这条错误无关紧要,可以通过如下方式进行放行;
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start stave;
show slave status\G;
# 常见的代表性错误
# 1007:数据库已存在,创建数据库失败
# 1008:数据库不存在,删除数据库失败
# 1050:数据表已存在,创建数据表失败
# 1051:数据表不存在,删除数据表失败
# 1054:字段不存在,或程序文件跟数据库有冲突
# 1060:字段重复,导致无法插入
# 1061:重复键名
# 1068:定义了多个主键
# 1094:位置线程ID
# 1146:数据表缺失,请恢复数据库
# 1053:复制过程中主服务器宕机
# 1062:主键冲突 Duplicate entry '%s' for key %d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22