从安装MySQL到搭建主从服务器的步骤
MySQL安装方式一:
一、rpm包
1、wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm(下载rpm
2、rpm -ivh mysql-community-release-el7-5.noarch.rpm(安装rpm包)
3、yum install mysql-server (安装)
二、操作MySQL
1、service mysql start(启动数据库)
2、service mysql status(查看数据库状态)
3、mysql -u root -p(登录数据库,密码为空)
4、GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
5、flush privileges; (赋值权限)
MySQL安装方式二:
一.系统环境(阿里云ECS服务器CentOs7.4)
若不清楚版本可用命令查看
[root@wcy ~]# lsb_release -a
LSB Version::core-4.1-amd64:core-4.1-noarch
Distributor ID:CentOS
Description:CentOS Linux release 7.4.1708 (Core)
Release:7.4.1708
Codename:Core
二.删除原来的数据库
//查询已安装的mariadb
[ ]
mariadb-libs-5.5.56-2.el7.x86_64 //文件名
//卸载mariadb,文件名为上述命令查询出来的文件
[ ]
三、下载与安装MySQL
1.安装MySQL官方的yum repository
[ ]
2.下载rpm包
[root@wcy ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
3.安装MySQL服务
如果是centos8
首先执行:
yum module disable mysql
[ ]
4.启动MySQL服务
[ ]
查看启动状态
[ ]
安装完成!
四:配置MySQL
1.mysql的几个相关命令
重启:systemctl restart mysqld.service
关闭:systemctl stop mysqld.service
配置开机启动
[ ]
[ ]
2.配置文件默认路径
配置文件:/etc/my.cnf
日志文件:/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service
socket文件:/var/run/mysqld/mysqld.pid
3.修改root密码
grep 'temporary password' /var/log/mysqld.log
首次通过初始密码登录后,使用以下命令修改密码
mysql -u root -p
'root'@'localhost' IDENTIFIED BY'你的root密码'; ALTER USER
4.重新载入
flush privileges;
5.远程访问
GRANT ALL ON *.* TO'root'@'%' IDENTIFIED BY '你的密码'; //只有执行了这一句才可以远程登陆
注意:如果是阿里云用户注意开放3306或相关端口
6.mysql安装之后默认的字符集是latin,我们修改为UTF-8。可以使用status命令查看。
status;
输入命令:vim /etc/my.cnf
在最下方追加
[client]
default-character-set = utf8
[mysqld]
character-set-server=utf8
lower_case_table_names = 1
[mysql]
default-character-set=utf8
重启MySQL
systemctl restart mysqld.service
五,防火墙
5.1使用命令查看
systemctl status firewalld
5.2.开启防火墙
systemctl start firewalld.service
5.3.重启防火墙
systemctl restart firewalld.service
5.4.查看firewall防火墙的状态
firewall-cmd --state
5.5.查看防火墙开放端口规则
firewall-cmd --list-port
5.6.查看80端口是否开启
firewall-cmd --query-port=80/tcp
5.7.开放80端口
firewall-cmd --permanent --add-port=80/tcp
5.8.加载生效开放的端口
每次修改防火墙,或者修改端口都需要用下面的命令重启防火墙
firewall-cmd --reload
5.9.查询指定端口80是否开放
firewall-cmd --query-port=80/tcp
六,主从服务配置
1.主服务器配置
配置文件默认在/etc/my.cnf下:
vim /etc/my.cnf
在配置文件中新增配置:
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
修改配置后需要重启才能生效:
systemctl restart mysqld.service
重启之后进入mysql:
mysql -uroot -p
在master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
CREATE USER 'slave'@'%' IDENTIFIED BY '@#$Rfg345634523rft4fa';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
语句中的%代表所有服务器都可以使用这个用户,如果想指定特定的ip,将%改成ip即可。
查看主mysql的状态:
show master status;
记录下File和Position的值,并且不进行其他操作以免引起Position的变化。
2.从服务器配置
配置文件默认在/etc/my.cnf下:
vim /etc/my.cnf
在从my.cnf配置中新增:
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
修改配置后需要重启才能生效:
systemctl restart mysqld.service
重启之后进入mysql:
mysql -uroot -p
change master to master_host='192.168.72.140', master_user='slave', master_password='@#$Rfg345634523rft4fa', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30;
master_port:Master的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
在从mysql中查看主从同步状态:
show slave status \G;
此时的SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。
开启主从复制:
start slave;
再次查看同步状态:
show slave status \G;
SlaveIORunning 和 SlaveSQLRunning 都是Yes说明主从复制已经开启。
若SlaveIORunning一直是Connecting,有下面4种原因:
1、网络不通,检查ip端口
2、密码不对,检查用于同步的用户名和密码
3、pos不对,检查Master的Position
4、mysql8特有的密码规则问题引起:
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '@#$Rfg345634523rft4fa';
将密码规则修改为:mysql_native_password
如果需要指定想要主从同步哪个数据库,可以在master的my.cnf添加配置:
binlog-do-db:指定mysql的binlog日志记录哪个db
或者在slave的my.cnf添加配置:
replicate-do-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可 replicate-ignore-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
如果想要同步所有库和表,在从mysql执行:
STOP SLAVE SQL_THREAD;
CHANGE REPLICATION FILTER REPLICATE_DO_DB = ();
start SLAVE SQL_THREAD;
如果以上步骤出现问题,可以查看日志:
/etc/log/mysqld.log
至此完成了mysql8主从同步搭建工作。