您的位置:首页 > 运维架构 > Linux

centos在线、离线安装MySQL,以及mysql主从数据库配置

2018-08-29 09:20 561 查看

mysql主从配置及部署手册

1、CentOS7下的MYSQL5.7安装

a、在线安装

安装步骤

1、下载mysql

命令:wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.20-
1.el7.x86_64.rpm-bundle.tar
默认在root目录下面

2、解压文件

命令:tar xvf mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar

3、安装mysql-community-common-5.7.20-1.el7.x86_64.rpm

命令:
1)rpm -qa | grep mariadb 查看是否存在mariadb
2)rpm -e –nodeps mariadb-libs-5.5.52-1.el7.x86_64 卸载存在的项目
3)rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm

4、安装mysql-community-libs-5.7.20-1.el7.x86_64.rpm

命令:
rpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm

5、安装mysql-community-client-5.7.20-1.el7.x86_64.rpm

命令:
rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm

6、安装mysql-community-server-5.7.20-1.el7.x86_64.rpm

命令:
1)yum install libaio 安装libaio
2)rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm

7、数据库初始化并启动

注:保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服
务,需要执行下面的命令初始化
命令:1)mysqld –initialize –user=mysql
2)systemctl start mysqld.service
执行命令后会在文件中生成一个默认的数据库登录密码

8、查看数据库登录密码

命令:
cat /var/log/mysqld.log 图中选中的区域就是密码

9、登录mysql修改密码

命令:
mysql -uroot -p 输入密码
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘密码’

b、离线安装

下载地址:https://dev.mysql.com/downloads/mysql/
链接:https://www.geek-share.com/detail/2692306501.html

1 . mariadb-lib卸载

安装新版mysql前,需将系统自带的mariadb-lib卸载
[root@slave mytmp]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@slave mytmp]# rpm -e –nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

2 . 解压mysql

[root@slave mytmp]# tar -zxf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar

3 . 使用rpm -ivh命令依次进行安装

rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
安装mysql-community-server-5.7.16-1.el7.x86_64.rpm 前需要安装libaio-0.3.107-
10.el6.x86_64.rpm
下载地址:
http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
安装libaio库:
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm(若在有网情况下可执行yum install libaio)
安装mysql-community-server:
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

4 . 初始化数据库

// 指定datadir, 执行后会生成~/.mysql_secret密码文件
[root@slave mytmp]# mysql_install_db –datadir=/var/lib/m
// 初始化,执行生会在/var/log/mysqld.log生成随机密码
[root@slave mytmp]# mysqld –initialize

5 . 更改mysql数据库目录的所属用户及其所属组,并启动mysql数据库

[root@slave mytmp]# chown mysql:mysql /var/lib/mysql -R
[root@slave mytmp]# systemctl start mysqld.service

6 . 登录到mysql,更改root用户的密码

// password 通过 cat ~/.mysql_secret 命令可以查看初始密码
[root@slave mytmp]# mysql -uroot -p
Enter password:
mysql> set password=password(‘1234’);

7 . 创建用户,及作权限分配

mysql> CREATE USER ‘zz’@’%’ IDENTIFIED BY ‘1234’;
mysql> GRANT ALL PRIVILEGES ON . TO ‘zz’@’%’;
mysql> FULSH PRIVILEGES;

8 . 远程登陆授权

mysql> grant all privileges on . to ‘root’@’%’ identified by ‘1234’ with grant option;
mysql> flush privileges;

9 . 设置mysql开机启动

// 检查是否已经是开机启动
systemctl list-unit-files | grep mysqld
// 开机启动
systemctl enable mysqld.service

2、CentOS 7 下 MySql5.7 主从配置

演示用两台全新MySql服务器:
mysql1:10.100.50.24 (主)
mysql2:10.100.50.57 (从)
配置主从,步骤如下:

STEP 1:创建复制账号 repl

在mysql1上创建复制账号 repl
CREATE USER ‘repl’@’10.100.50.%’ IDENTIFIED BY ‘myRep8%Go’;
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘repl’@’10.100.50.%’;

STEP 2:编辑mysql1的/etc/my.cnf 文件

在mysql1上编辑 /etc/my.cnf 文件,增加两行
log_bin=mysql-bin
server_id=24
开启二进制日志和设置server_id(只能是数字,此处用IP地址后两位),然后重启mysqld(service mysqld restart;),
用root账号登录进去,执行“SHOW MASTER STATUS”语句,检查输出是否与如下一致
mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+———-
———+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
Executed_Gtid_Set |
+——————+———-+————–+——————+———-
———+
| mysql-bin.000002 | 1341 | | |
|
+——————+———-+————–+——————+———-
———+
1 row in set (0.00 sec)

STEP 3:编辑mysql2的/etc/my.cnf 文件

在mysql2上编辑 /etc/my.cnf 文件,增加以下配置,然后重启mysqld
log_bin=mysql-bin
server_id=24
relay_log=/var/lib/mysql/mysql-relay-bin
log_slave_updates=1
read_only=1
如果采用“主-主”结构,read_only为可选配置

STEP 4:mysql2连接到mysql1

登录mysql2数据库,执行以下语句,让mysql2连接到mysql1,并重放其二进制日志
CHANGE MASTER TO MASTER_HOST=’10.100.50.24’,
MASTER_USER=’repl’,MASTER_PASSWORD=’myRep8%Go’, MASTER_LOG_FILE=’mysqlbin.000002’,
MASTER_LOG_POS=1341;
执行成功后,再输入“SHOW SLAVE STATUS\G”检查配置是否正确,如下所示
mysql> SHOW SLAVE STATUS\G
***************** 1. row *****************
Slave_IO_State:
Master_Host: 10.100.50.24
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: No
Slave_SQL_Running: No
Slave_IO_State 为空,Slave_IO_Running 和 Slave_SQL_Running 均为 NO,表示复制并未运行,要启动复制还需运行命
令“START SLAVE”
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SLAVE STATUS\G
***************** 1. row *****************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.10.1.55
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
20000 Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 623
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 836
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
后记:
如果对mysql1再做一遍和mysql2类似的配置,即可把mysql1设置为mysql2的从库,实现“主-主”热备结构。通常来说一个
高可用的读写分离数据库架构至少需要三台服务器:一台主,一台热备主,一台只读。删除主从配置命令
reset master: 删除所有的二进制日志,并重新创建一个新的二进制日志
reset slave all: 从slave删除主从复制关系的位置信息,并完全的清理复制连接参数信息
mysql 重启的话 要 重放其二进制日志
查看是否开启二进制日志
w variables like ‘%log_bin%’;
CHANGE MASTER TO MASTER_HOST=’192.168.237.101’,
MASTER_USER=’repl’,MASTER_PASSWORD=’Root123!’, MASTER_LOG_FILE=’mysqlbin.000004’,
MASTER_LOG_POS=0;
master 主机意外停止运行,重启master 需要重新指向master 的二进制文件和pos
change master to
master_host=’10.100.50.24’,master_user=’repl’,master_password=’myRep8%Go’,master_log_file=’mysqlbin.
000003’,master_log_pos=154;

3、Centos7 mysql无法远程连接解决办法

mysql安装后还要允许远程连接,其他服务器才能连接到本地的数据库。
将3306端口添加到防火墙中:
[caibo@localhost /]firewall−cmd–zone=public–add−port=3306/tcp–permanentSuccess[caibo@localhost/]firewall−cmd–zone=public–add−port=3306/tcp–permanentSuccess[caibo@localhost/] firewall-cmd –reload
systemctl stop firewalld.service #停止
systemctl disable firewalld.service #禁用
mysql账户是否不允许远程连接。如果无法连接可以尝试以下方法:
mysql -u root -p //登录MySQL
mysql> GRANT ALL PRIVILEGES ON . TO ‘root’@’%’WITH GRANT OPTION; //任何远程主机都可以访问数据库
mysql> FLUSH PRIVILEGES; //需要输入次命令使修改生效
mysql> EXIT //退出
也可以通过修改表来实现远程:
mysql -u root -p
mysql> use mysql;
mysql> update user set host = ‘%’ where user = ‘root’;
mysql> select host, user from user;

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: