vlambda博客
学习文章列表

从安装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-noarchDistributor ID:CentOSDescription:CentOS Linux release 7.4.1708 (Core) Release:7.4.1708Codename: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.servicesocket文件:/var/run/mysqld/mysqld.pid



3.修改root密码



 grep 'temporary password' /var/log/mysqld.log




首次通过初始密码登录后,使用以下命令修改密码



mysql -u root -pmysql> 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=utf8lower_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_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主从同步搭建工作。