一、安装
# 更新 apt-get 工具
sudo apt-get update
# 自动下载安装 mysql,默认安装最新版
sudo apt-get install mysql-server
二、配置忽略大小写
# 1.停掉 mysql 服务
service mysql stop
# 2.删除 /var/lib/mysql (建议重要数据,提前备份)
rm -rf /var/lib/mysql
# 3.新建 /var/lib/mysql
mkdir /var/lib/mysql
# 4.授权
sudo chown -R mysql:mysql /var/lib/mysql
# 5.配置文件 [mysqld] 组下中添加 lower-case-table-names=1
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 6.初始化 lower-case-table-names=1
sudo /usr/sbin/mysqld --initialize --user=root --lower-case-table-names=1
# 7.启动服务
service mysql start
# 8.经过初始化后会重置密码,给一个随机的密码
cat /var/log/mysql/error.log 查看密码
三、设置账号密码
# 进入mysql 服务设置
sudo mysql
mysql> use mysql;
mysql> update user set plugin='mysql_native_password' where User='root';
# mysql8
#使用mysql_native_password修改加密规则
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
#允许远程访问
mysql> update user set host = '%' WHERE user = 'root';
#刷新cache中配置 刷新权限
mysql> flush privileges;
四、 配置主从数据库
1. 修改主数据库配置
1.1. 修改配置
#进入 mysql 环境配置文件中
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 添加以下环境配置
[mysqld]
# 忽略大小写
lower-case-table-names=1
#[必须]主服务器唯一ID
server-id=1
#[必须]启用二进制日志,无后缀的文件名。也可以是本地的路径/log/bin-log
log-bin=bin-log
#[可选]设置需要复制的数据库名称,默认全部记录。
binlog-do-db=master_db
#[可选]设置不要复制的数据库
binlog-ignore-db=test
#[可选] 0(默认)表示读写(主库),1表示只读(从库)
#根据实际配置,如果要热备,两个都需要可读写
read-only=0
#设置日志文件保留的时长,单位是秒
binlog_expire_logs_seconds=60000
#控制单个二进制日志大小。此参数的最大和默认值是1GB
max_binlog_size=500M
#[可选]设置binlog格式(STATEMENT是基于sql语句的复制,ROW是基于行的复制,MIXED是混合模式)
binlog_format=STATEMENT
1.2. 重启数据库
sudo service mysql restart
1.3. 创建从数据库账号
(1)进入 mysql 命令行界面
mysql -uroot -p
(2)创建 从库 操作账号密码 slave2,并修改密码复杂度
create user 'slave2'@'%' identified by '111111';
ALTER USER 'slave2'@'%' IDENTIFIED WITH mysql_native_password BY '111111';
flush privileges;
(3)给 slave2账号 授予权限。master_db根据上面主数据库配置的#[可选]设置需要复制的数据库名称,默认全部记录,进行设置,如果复制全部记录,则需要将所有数据库权限授予账号(grant all on *.* to 'slave2'@'%';)
grant all on master_db.* to 'slave2'@'%';
flush privileges;
1.4.查看主机状态,其中的配置在从库复制命令中会用上
show master status;
2. 修改从库配置
2.1. 修改配置
# 进入 mysql 环境配置文件中
vim /etc/mysql/mysql.conf.d/mysql.cnf
# 添加以下配置
[mysqld]
#[必须]从服务器唯一ID
server-id=2
#[可选]启用中继日志
relay-log=mysql-relay
#[可选] 0(默认)表示读写(主机),1表示只读(从机)
#根据实际配置,如果要热备,两个都需要可读写
read-only=1
#[可选] 选择复制的数据库,不填则默认复制主库授权可以复制的数据库
replicate-do-db=master_db
#[可选] 表示不随着数据库启动而启动复制
skip-slave-start
2.2. 创建用户
(1)进入 mysql 命令行界面
mysql -uroot -p
(2)创建操作账号密码 rdonly
create user 'rdonly'@'%' identified by '111111';
ALTER USER 'rdonly'@'%' IDENTIFIED WITH mysql_native_password BY '111111';
flush privileges;
(3)给 rdonly 账号 授予权限。master_db根据上面主数据库配置的#[可选]设置需要复制的数据库名称,默认全部记录,进行设置,如果复制全部记录,则需要将所有数据库权限授予账号(grant all on *.* to 'rdonly'@'%';)
grant select on master_db.* to 'rdonly'@'%';
flush privileges;
2.3. 复制命令
change master to
master_host = '主库IP地址',
master_port = 主库端口,
master_user = 'slave2',
master_password = '111111',
master_log_file = 'bin-log.000003',
master_log_pos = 193697;
里面的参数根据主数据库的配置更改
start slave // 启动从库复制命令
stop slave // 停止从库复制命令
reset slave // 重置从库复制命令
查看复制状态
show slave status\G
五、主主配置
在第四步上进行补充
进入从库mysql 执行 show master status;
记录信息,切换到主库执行:
change master to
master_host = '主库IP地址',
master_port = 主库端口,
master_user = 'slave2',
master_password = '111111',
master_log_file = 'bin-log.000005',
master_log_pos = 997;
里面的参数根据从数据库的配置更改
start slave
查看复制状态
show slave status\G
Slave_IO_Running:yes
Slave_SQL_Running:yes
表示成功
最后再打开两个数据库互相改数据进行验证