mysql 主从搭建

from@liuwei

 

Centos7+mysql5.7.21主从配置

数据目录设置:
字符集设置:
开机自动重启设置:

192.168.200.108:slave
192.168.200.109:master

一、安装

主从 mysql 都需要进行下面的操作

1、卸载系统自带的 mariadb-lib

[srvadmin@du-s8-idc soft]$ rpm -qa | grep -i mariadb 或 rpm -qa | grep -i mysql
mariadb-libs-5.5.44-2.el7.centos.x86_64
pcp-pmda-mysql-3.10.6-2.el7.x86_64
[srvadmin@du-s8-idc soft]$ sudo rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 —nodeps
[srvadmin@du-s8-idc soft]$ sudo rpm -e pcp-pmda-mysql-3.10.6-2.el7.x86_64 —nodeps

2、mysql rpm 安装包

mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
下载地址
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar

3、解压

tar -xvf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar

4、安装

[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
修改 mysql 的数据目录
sudo vi /etc/my.cnf

datadir=/var/lib/mysql

datadir=/data00/mysql/data
创建并修改 /data00/mysql/data 目录属主
mkdir -p /data00/mysql/data
sudo chown -R mysql:mysql mysql/data
一定要安装上述的顺序来执行。
注:执行 rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
出现错误:warning: mysql-community-server-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies:​ libaio.so.1()(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64​ libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64​ libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64 错误原因:缺少依赖包 libaio
解决方式: yum install libaio

5、数据库初始化

为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化 mysqld —initialize —user=mysql
如果是以 mysql 身份运行,则可以去掉 —user 选项。
另外 —initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码,而使用 —initialize-insecure 命令则不使用安全模式,则不会为 root 用户生成一个密码。
这里演示使用的 —initialize 初始化的,会生成一个 root 账户密码,密码在 log 文件里,最下面一行 FadKojZte5#T 就是自动生成的密码
[srvadmin@du-s8-idc soft]$ sudo mysqld —initialize —user=mysql
[srvadmin@du-s8-idc soft]$ cat /var/log/mysqld.log

6、启动数据库

[srvadmin@du-s8-idc soft]$ sudo systemctl start mysqld.service

7、设置 mysql 开机自动启动

[srvadmin@du-s8-idc soft]$ sudo systemctl enable mysqld

8、登录数据,用上生成的密码登录

[srvadmin@du-s8-idc soft]$ mysql -uroot -p

9、修改随机密码

mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘passwd’;

二、主配置(192.168.200.109)

1、vi /etc/my.cnf 配置

server-id=109 #设置主服务器的 ID (不能和别的服务器重复,建议使用 ip 的最后一段)
innodb_flush_log_at_trx_commit=2 #
sync_binlog=1 #开启 binlog 日志同步功能
log-bin=mysql-bin-109 #binlog 日志文件名
binlog-do-db=xxxx # 这个表示只同步某个库 (如果没有此项,表示同步所有的库)

2、配置完后重启 mysql

sudo systemctl restart mysqld
mysql -u root -p ##登录密码
mysql> grant replication slave on . to ‘mysqlBackupUser’@’192.168.200.108’ identified by ‘passwd’;
##授权给从数据库服务器用户名 mysqlBackupUser,密码 passwd,192.168.200.108 使用通配符表示该网段下所有服务器均可使用
mysql>show master status;##查看主库的状态 file,position 这两个值很有用,记一下。要放到 slave 配置中
+——————————+—————+———————+—————————+—————————-+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +——————————+—————+———————+—————————+—————————-+ | mysql-bin-109.000001 | 462 | xxxx | | | +——————————+—————+———————+—————————+—————————-+

三、从配置(192.168.200.108)

1、vi /etc/my.cnf

server-id=108 #ip 最后一段
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-108
配置完成后,重启从库的 mysql
sudo systemctl restart mysqld
mysql -u root -p ##登录 mysql
mysql> change master to master_host=’192.168.200.109’, master_user=’mysqlBackupUser’
,master_password=’passwd’,master_log_file=’mysql-bin-109.000001’,master_log_pos=462;
mysql> start slave; ##开启从库 (stop slave:关闭从库)
mysql> show slave status; ###Slave_IO_Running,Slave_SQL_Running 都为 Yes 的时候表示配置成功

四、验证

create database test_lw character set utf8;

你可能感兴趣的:(mysql 主从搭建)