1.环境准备
1.1环境说明
在saster上面已经有一个数据库,要求搭建一主双从环境,将saster已有的数据库备份至从服务器,且实现主从复制
saster IP地址为192.168.100.235,已有customer库
slave1的IP地址为192.168.100.60,全新服务器,无MySQL
slave2的IP地址为192.168.100.70,全新服务器,无MySQL
从节点采用二进制安装MySQL
2.搭建NTP服务器
2.1安装NTP
[root@mysql_server_master ~]## yum -y install ntp
2.2配置NTP
[root@mysql_server_master ~]# vim /etc/ntp.conf restrict 127.127.1.0 restrict 127.127.1.0 stratum 8
2.3启动时间服务
[root@mysql_server_master ~]# systemctl start ntpd
2.4在从节点运行时间同步
slave1同步:
[root@mysql_server_slave1 ~]# yum -y install ntpdate
[root@mysql_server_slave1 ~]# ntpdate 192.168.100.235
slave2同步
[root@mysql_server_slave2 ~]# yum -y install ntpdate
[root@mysql_server_slave2 ~]# ntpdate 192.168.100.235
3.软件安装
3.1slave1
获取二进制包
[root@mysql_server_slave1
~]# cd
/usr
/local
/src
[root@mysql_server_slave1src
]#wget https
://dev
.mysql
.com
/get/Downloads
/MySQL
-5.7/mysql
-5.7.30- el7
-x86_64
.tar
.gz
解压缩
[root@mysql_server_slave1 src
]# tar
-zxvf mysql
-5.7.30- el7
-x86_64
.tar
.gz
-C /usr
/local
初始化前准备
创建mysql程序用户
[root@mysql_server_slave1
~]# adduser
-M -s
/sbin
/nologin mysql
创建MySQL数据文件目录
[root@mysql_server_slave1
~]# mkdir
-p
/data
/mysql
/data
/
为MySQL相关目录授权
[root@mysql_server_slave1
~]# chown
-R mysql
:mysql
/usr
/local
/mysql
/
[root@mysql_server_slave1
~]# chown
-R mysql
:mysql
/mysql
/data
/
建立MySQL配置文件(复制Master配置文件,修改server
-id
)
[root@mysql_server_slave1
~]# scp root@
192.168.100.235:/etc/my.cnf
/etc
/my
.cnf
注:必须修改server
-id
生成MySQL启动脚本
#设置环境变量
[root@local support
-files
]# echo
'export PATH=/usr/local/mysql/bin:$PATH' >> /etc
/profile
[root@local support
-files
]# source
/etc
/profile
[root@local support
-files
]# tail
-1 /etc
/profile
export PATH=/usr
/local
/mysql
/bin
:$
PATH
#生成启动脚本
[root@local
~]# cd
/usr
/local
/mysql
/support
-files
/
[root@local support
-files
]# ls
magic mysqld_multi
.server mysql
-log
-rotate mysql
.server
[root@local support
-files
]# cp mysql
.server
/etc
/init
.d
/mysqld
初始化数据库
[root@mysql_server_slave1
~]#
/usr
/local
/mysql
/bin
/mysqld
--initialize
-insecure
--user
=mysql
--basedir
=/usr
/local
/mysql
--datadir
=/data
/mysql
/data
注:对/data/mysql/data应该保持为空,且属主与属组均为mysql
修改数据库密码
登录MySQL(没有密码登录
)
[root@local
~]# mysql
-uroot
-p
Enter password
:
查看版本
mysql
> select
version();
+-----------+
| version() |
+-----------+
| 5.7.30 |
+-----------+
1 row
in set (0.00 sec
)
设置密码
mysql
> update mysql
.user
set authentication_string
=password('123') where user
='root';
Query
OK, 1 row affected
, 1 warning (0.01 sec
)
Rows matched
: 1 Changed
: 1 Warnings
: 1
mysql
> flush privileges
;
Query
OK, 0 rows
affected (0.01 sec
3.2slave 2
在slave2上保持和slave1同步操作即可
4.配置MySQL的master
4.1 登录主服务器
4.2 为从服务器授权
mysql
> GRANT REPLICATION SLAVE ON *.* TO 'slave'@
'192.168.100.%' IDENTIFIED BY'123';
Query
OK, 0 rows affected
, 1 warning (0.00 sec
)
mysql
> FLUSH PRIVILEGES;
Query
OK, 0 rows
affected (0.00 sec
)
mysql
> show master status
;
+------------------+----------+--------------+------------------+-------------------+
| File
| Position
| Binlog_Do_DB
| Binlog_Ignore_DB
| Executed_Gtid_Set
|
+------------------+----------+--------------+------------------+-------------------+
| mysql
-bin
.000009 | 19568 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row
in set (0.00 sec
)
FIle列为文件名,Position列显示偏移量
注:文件名和偏移量在配置从服务器时需使用,且保持一致
5.对从库同步主库已有数据文件
5.1对custumer库做增量备份
[root@mysql_server_master data]# mysqldump -uroot -p -B custumer > /root/custumer.sql
5.2 在slave1复现master数据
在slave1将主库对custumer的全量备份文件拉取到本地数据库的数据文件目录下
[root@mysql_server_slave1
~]# cd
/data
/mysql
/data
/
[root@mysql_server_slave1 data
]# scp root@
192.168.100.235:/root
/custumer
.sql
/data
/mysql
/data
/
root@
192.168.100.235's password
:
custumer
.sql
100% 2584 2.1MB
/s
00:00
将custumer恢复到本地数据库
登录MySQL,使用source恢复
恢复验证
5.3 在slave2复现master数据
对于slave2保持和slave1同步操作即可
6.在从服务器启动同步
6.1slave1
mysql
>change master to master_host
='192.168.100.235',master_user
='slave',master_password
='123',master_log_file
='mysql-bin.000009',master_log_pos
=19568;
mysql
>start slave
;
6.2 slave2
对slave2保持6.1中操作即可
7.验证主从同步效果
7.1在主服务器为client插入一条数据
7.2slave1进行验证
7.3slave2进行验证