mysql8.0.28主从(Master-Slave)配置安装

我这里是RHEL6.5的系统,因此选择RedHat 6 x86,64bit操作系统---下载第一个RPM Bundle即可--mysql-8.0.28-1.el6.x86_64.rpm-bundle.tar。

目前MySQL8.0.28社区版提供了多种多样的安装方式,但是并未发现针对Linux Generic安装包包含的mysql_secure_installation的安装说明。

因此这里使用推荐的RPM安装:

一、mysql-8.0.28-1.el6.x86_64.rpm-bundle.tar解压后有如下7个文件:

-rw-r--r-- 1 root root 28987588 Apr 9 01:06 mysql-community-client-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 28987588 Apr 9 01:06 mysql-community-client-plugins-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 672184 Apr 9 01:06 mysql-community-common-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 4443296 Apr 9 01:06 mysql-community-devel-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 2579460 Apr 9 01:06 mysql-community-libs-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 2579460 Apr 9 01:06 mysql-community-icu-data-files-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 1902676 Apr 9 01:06 mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 395918848 Apr 9 01:07 mysql-community-server-8.0.28-1.el6.x86_64.rpm

-rw-r--r-- 1 root root 49092596 Apr 9 01:07 mysql-community-test-8.0.28-1.el6.x86_64.rpm

然后创建mysql用户:

useradd mysql

passwd mysql

二、安装顺序为:(建议装之前先把之前的mysql相关包全部卸载,rpm -e --nodeps 即可)

[root@python ~]# rpm -ivh mysql-community-common-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-common-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

1:mysql-community-common ########################################### [100%]

[root@python ~]# rpm -ivh mysql-community-libs-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-libs-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

1:mysql-community-libs ########################################### [100%]

[root@python ~]# rpm -ivh mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

file /usr/lib64/mysql/libmysqlclient.so.16.0.0 from install of mysql-community-libs-compat-8.0.28-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-8.0.1.el6_8.x86_64

file /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 from install of mysql-community-libs-compat-8.0.28-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-8.0.1.el6_8.x86_64

--卸载多其他版本的mysql

[root@python ~]# rpm -e --nodeps mysql-libs-5.1.73-8.0.1.el6_8.x86_64

[root@python ~]# rpm -ivh mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-libs-compat-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

1:mysql-community-libs-co########################################### [100%]

[root@python ~]# rpm -ivh mysql-community-server-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-server-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

error: Failed dependencies:

mysql-community-client(x86-64) >= 8.0.0 is needed by mysql-community-server-8.0.28-1.el6.x86_64

[root@python ~]# rpm -ivh mysql-community-client-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-client-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

1:mysql-community-client ########################################### [100%]

[root@python ~]# rpm -ivh mysql-community-server-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-server-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

1:mysql-community-server ########################################### [100%]

[root@python ~]# rpm -ivh mysql-community-devel-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-devel-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

1:mysql-community-devel ########################################### [100%]

[root@python ~]# rpm -ivh mysql-community-icu-data-files-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-icu-data-files-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

Preparing... ########################################### [100%]

1:mysql-community-icu-data-files########################################### [100%]

^[[A[root@python ~]# rpm -ivh mysql-community-test-8.0.28-1.el6.x86_64.rpm

warning: mysql-community-test-8.0.28-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY

error: Failed dependencies:

perl(JSON) is needed by mysql-community-test-8.0.28-1.el6.x86_64

--懒的去装perl了,因此测试套件就不装了。

三、安装完毕后相关信息如下:

[root@python ~]# mysql -V

mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)

[root@python ~]# ll /etc/init.d/mysqld

-rwxr-xr-x 1 root root 7166 Apr 8 16:21 /etc/init.d/mysqld

[root@python ~]# ll /etc/my.cnf --配置文件位置

-rw-r--r-- 1 root root 1188 Apr 8 16:21 /etc/my.cnf

默认的datadir是在/var/lib/mysql/,可以通过修改vi /etc/my.cnf修改,启动命令如下:

vi /etc/my.cnf

[mysqld]
skip-grant-tables
default-authentication-plugin=mysql_native_password
server-id = 2
datadir = /data/mysql/data
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
socket = /var/lib/mysql/mysql.sock

port = 3306
log-error = /var/log/mysqld.log
pid-file = /var/run/mysqld/mysqld.pid
character-set-server=UTF8MB4

[client]
port=3306
default-character-set=UTF8MB4

 

启动服务器mysqld服务

[root@python ~]# service mysqld start

Initializing MySQL database: [ OK ]

Starting mysqld:

[ OK ]

1、先关闭mysql服务

service mysql stop      停止

2、修改配置文件,添加免密码登陆

vim /etc/my.cnf
在[mysqld]下面添加一行skip-grant-tables
增加:skip-grant-tables

3、重新启动mysql服务,并从新连接到数据库,记得不用输入密码了(上面已配置跳过认证的步骤)

service mysql start

执行命令:mysql -u root -p   (不要输入密码,直接敲回车)

4、开始执行修改的指令

选择数据库mysql : use mysql;
将密码置空 update user set authentication_string = '' where user = 'root';
退出 quit

5、再次编辑配置文件my.cnf 去除免密码登陆

修改mysql配置,删掉或注释掉步骤2中添加的语句 skip-grant-tables

6、重启服务

service mysql restart

7、修改密码,执行如下命令:

mysql -u root -p //提示输入密码时直接敲回车,刚刚已经将密码置空了

开始修改密码:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';

FLUSH PRIVILEGES;

mysql数据库安装成功.可以用客户端工具登录下试试

MySQL 8.0主从(Master-Slave)配置

主从配置需要注意的点

主从服务器操作系统版本和位数一致;

Master 和 Slave 数据库的版本要一致;

Master 和 Slave 数据库中的数据要一致;

Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;

Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;

主从配置的简要步骤
Master 上的配置

安装数据库;

修改数据库配置文件, 指明 server_id, 开启二进制日志(log-bin);

启动数据库, 查看当前是哪个日志, position 号是多少;

登录数据库, 授权数据复制用户(IP 地址为从机 IP 地址, 如果是双向主从, 这里的还需要授权本机的 IP 地址, 此时自己的 IP 地址就是从 IP 地址);

备份数据库(记得加锁和解锁);

传送备份数据到 Slave 上;

启动数据库;

以下步骤, 为单向主从搭建成功, 想搭建双向主从需要的步骤:

登录数据库, 指定 Master 的地址、 用户、 密码等信息(此步仅双向主从时需要);

开启同步, 查看状态;

Slave 上的配置

安装数据库;

修改数据库配置文件, 指明 server_id(如果是搭建双向主从的话, 也要开启二进制 日志 log-bin);

启动数据库, 还原备份;

查看当前是哪个日志, position 号是多少(单向主从此步不需要, 双向主从需要);

指定 Master 的地址、 用户、 密码等信息;

开启同步, 查看状态。

1、主节(Master)点配置

修改 Master 的配置文件/etc/my.cnf

vi /etc/my.cnf

在my.cnf文件中加入如下配置内容

[mysqld]
log-bin=mysql-bin
server-id=1

2、从节点(Slave)配置

修改 Slave 的配置文件/etc/my.cnf

vi /etc/my.cnf

在my.cnf文件中加入如下配置内容

[mysqld]

log-bin=mysql-log
server-id=2

3、创建用于复制操作的用户

在主节点创建一个用户repl,用于从节点链接主节点时使用。注意repl是主服务器的用户,而 % 指的是从数据库的服务器IP,意思就是让从服务器有访问的权限

mysql> CREATE USER repl@'%' IDENTIFIED WITH mysql_native_password BY 'Yfservice_1234';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

刷新授权表信息

mysql> flush privileges;

4、获取主节点当前binary log文件名和位置(position)

mysql> SHOW MASTER STATUS;

mysql8.0.28主从(Master-Slave)配置安装_第1张图片

5、在从(Slave)节点上设置主节点参数

CHANGE MASTER TO MASTER_HOST='192.168.10.251',MASTER_USER='repl',MASTER_PASSWORD='Yfservice_1234',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1899;

6、查看(Slave)主从同步状态

mysql> show slave status\G;

7、开启主从同步

mysql> start slave;

8、再查看主从同步状态

mysql> show slave status\G;

查看状态时,可能会出现I/O任务启动失败的情况,即如下错误:

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

这是因为在MySQL主从结构中,从机上的server_id和主机上的server_id不能相同,我们可以看一下主机上的server_id和从机上的server_id是否相同。

mysql> show variables like 'server_id'; 

主机:

mysql8.0.28主从(Master-Slave)配置安装_第2张图片
从机:

mysql8.0.28主从(Master-Slave)配置安装_第3张图片

这里我们把从机的server_id改成2

mysql> set global server_id=2; #此处的数值和my.cnf里设置的一样就行 

9、重新开启同步并查看装态

mysql> start slave;
mysql> show slave status\G;

mysql8.0.28主从(Master-Slave)配置安装_第4张图片

开启主从之后,如果状态如上图所示,那么说明主从信息就已经配置好了,接下来我们测试一下在主机上创建一个数据库,然后在从机上是否能够同步创建。

首先看一下我们主机和从机除了MySQL本身自带的数据库之前目前是没有任何数据的。

mysql8.0.28主从(Master-Slave)配置安装_第5张图片

mysql8.0.28主从(Master-Slave)配置安装_第6张图片

三、同步主库已有数据到从库

主库操作:

1、停止主库的数据更新操作

mysql>flush tables with read lock;

2、新开终端,生成主数据库的备份(导出数据库)

[root@zhoujietest ~]# mysqldump -uroot -ptest123 testA > testA.sql

3、将备份文件传到从库

[root@zhoujietest ~]# scp testA.sql root@192.168.8.11:/root/

4、主库解锁

mysql>unlock tables;

 

从库操作:

1、停止从库slave

mysql>slave stop;

2、新建数据库testA

mysql> create database testA default charset utf8;

3、导入数据

[root@ops-dev ~]# mysql -uroot -ptest123 testA<testA.sql

4、查看从库已有该数据库和数据 

mysql> show databases;+--------------------+

| Database           |

+--------------------+

| information_schema |

| cmdb               |

| mysql              |

| performance_schema |

| test               |

+--------------------+

 

此时主从库的数据完全一致,如果对主库进行增删改操作,从库会自动同步进行操作。

你可能感兴趣的:(mysql,数据库,服务器)