安装与初始化
使用apt直接安装
- 切换为root权限
- 使用命令
apt install mysql-server安装 - 使用命令
systemctl start mysql启动 - 使用命令
systemctl enable mysql设置开机自启 - 修改配置,让mysql允许从其他服务器远程访问
# 执行命令修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到bind-address = 127.0.0.1修改为下行,并保存退出
bind-address=0.0.0.0
- 使用命令
systemctl restart mysql重启mysql服务
初始化
- 安装完成后执行命令
mysql_secure_installation进行安全初始化,按提示操作:
- 是否启用 VALIDATE PASSWORD PLUGIN?建议选
Y(可设密码强度) - 设置 root 密码(强烈建议设置强密码)
- 删除匿名用户? →
Y - 禁止 root 远程登录? →
Y(除非你需要远程管理) - 删除测试数据库? →
Y - 重新加载权限表? →
Y
初始化root密码
- 没设置root密码时,在本机上可以使用
mysql -u root免密登录 - 切换到mysql数据库
use mysql; - 修改密码
alter user 'root'@'localhost' identified by 'password', 其中password替换为你自己的密码 - 如果想root用户也支持远程登录,需要将user表的host字段的值修改为%:
update user set host='%' where user='root', 不建议这么做,建议创建新用户,或者重新添加一个root@%用户:create user 'root'@'%' identified by 'password', 将password替换为你自己的密码 - 刷新权限
flush privileges; exit退出重新登录
创建用户
- 使用命令
mysql -u root -p并输入root密码登录mysql服务 - 切换到mysql数据库
use mysql; - 创建用户并设置密码
create user 'username'@'%' identified by 'password';,其中username替换为你的用户名,password替换为你的密码,密码建议设置复杂点,%号表示该用户可以远程访问 - 给用户赋予创建数据库的权限
grant create on *.* to 'username'@'%';,赋权之后可以使用show grants for 'username'@'%';查看权限,建议由DBA创建库,只赋予对应的CREATE, INSERT, SELECT, INSERT, UPDATE, DELETE, SHOW VIEW权限,或者ALL PRIVILEGES - 刷新权限
flush privileges; - 如果要取消权限:
revoke create on *.* for 'username'@'%',再刷新即可
主从配置
主库配置
-
vim /etc/mysql/mysql.conf.d/mysqld.conf 修改mysql的配置文件
# 主库ID配置, 主库,从库不能相同
server-id = 1
# 开启binlog日志,mysql-bin是日志的前缀名
log-bin=mysql-bin
binlog_expire_logs_seconds = 604800 # 7天,自动清理过期日志
# MySQL 8.0 推荐设置(避免复制问题)
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON
- 重启mysql服务
systemctl restart mysql - 创建复制专用用户并赋予权限
-- 创建复制用户(允许从 192.168.1.11 连接)
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED BY 'StrongReplPass123!';
-- 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
-- 刷新权限
FLUSH PRIVILEGES;
从库配置
-
vim /etc/mysql/mysql.conf.d/mysqld.conf 修改mysql的配置文件
[mysqld]
server-id = 2 # 必须与主库不同
read_only = ON # 强烈建议开启(防止误写)
relay-log = relay-bin # 中继日志(可选,默认开启)
# 如果主库用了 GTID,从库也必须开启
gtid_mode = ON
enforce_gtid_consistency = ON
- 重启mysql服务
systemctl restart mysql - 配置主从复制
create user if not exists 'repl'@'从库IP' identified by 'password';
ALTER USER 'repl'@'从库IP' IDENTIFIED WITH 'mysql_native_password' AS '*833E73FBACE6E892AE550941EFCB2B2687008599
-- 停止从库复制(如果之前有)
STOP REPLICA;
-- 配置主库信息
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.1.10',
SOURCE_PORT=3306,
SOURCE_USER='repl',
SOURCE_PASSWORD='StrongReplPass123!',
SOURCE_AUTO_POSITION=1; -- 关键!启用 GTID 自动定位
-- 启动复制
START REPLICA;
验证复制是否成功
SHOW REPLICA STATUS\G
问题定位
-- 查看每个 worker 的错误详情(MySQL 5.7+)
SELECT * FROM performance_schema.replication_applier_status_by_worker\G
生成测试数据
- 使用官方压测工具sysbench:
apt install sysbench安装 - 生成测试数据
sysbench --db-driver=mysql --mysql-user=username -mysql-password=password --mysql-password=123456 \ --mysql-db=test tables=4 --table-size=100000 oltp_common prepare