从安装MySQL到搭建主从服务器的步骤

x33g5p2x  于2021-11-16 转载在 Mysql  
字(4.4k)|赞(0)|评价(0)|浏览(324)

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
[root@wcy ~]# rpm -qa|grep mariadb 
mariadb-libs-5.5.56-2.el7.x86_64 //文件名
//卸载mariadb,文件名为上述命令查询出来的文件
[root@wcy ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

三、下载与安装MySQL
1.安装MySQL官方的yum repository

[root@wcy ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

2.下载rpm包

[root@wcy ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

3.安装MySQL服务
如果是centos8
首先执行:

yum module disable mysql
[root@wcy ~]# yum -y install mysql-community-server

4.启动MySQL服务

[root@wcy ~]# systemctl start mysqld.service

查看启动状态

[root@localhost ~]# systemctl status mysqld.service

安装完成!

四:配置MySQL
1.mysql的几个相关命令

重启:systemctl restart mysqld.service
关闭:systemctl stop mysqld.service

配置开机启动

[root@wcy ~]# systemctl enable mysqld
[root@wcy ~]# systemctl daemon-reload

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
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY'你的root密码';

4.重新载入

mysql> flush privileges;

5.远程访问

GRANT ALL ON *.* TO'root'@'%' IDENTIFIED BY '你的密码'; //只有执行了这一句才可以远程登陆

注意:如果是阿里云用户注意开放3306或相关端口
6.mysql安装之后默认的字符集是latin,我们修改为UTF-8。可以使用status命令查看。

mysql> 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  #(–permanent永久生效,没有此参数重启后就失效)

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_host :Master的地址

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主从同步搭建工作。

相关文章

微信公众号

最新文章

更多