为了解决数据库服务的高可用问题以及负载均衡问题,

1正常情况下可以互为主从,均衡分担数据流量,

2防止数据库服务器在宕机的情况下可以顺利切换到正常的数据库服务器,减少公司的客户流量损失故公司需要搭建数据库集群以备不时之需。

一主一从

首先准备两台已安装好数据库的服务器:分别为A为主服务器和B从服务器

第一步初始化数据库:

1,备份A数据库服务器中所有的数据

[root@es1 ~]#mysql -uroot -p

mysql> reset master    #重置binlog日志

mysql> quit             #退出数据库

[root@es1 ~]# mysqldump -uroot -p –all-databases >/root/test.sql

[root@es1 ~]# ls         #查看备份结果

2在从库B中导入备份的数据

登录B服务器

[root@es2 ~]#mysql -uroot -p

mysql>drop database text;          # 清除所有测试数据

[root@es1 ~]# scp /root/mytest.sql root@192.168.12.118:/root/   #将数据库A中备份的数据上传至B数据库
root@192.168.12.118’s password:
mytest.sql 100% 790 418.8KB/s 00:00

mysql -u root -p < /mytest.sql  将数据备份至B数据库,

第二步配置主从数据库

在AB数据库服务器数据一致,binlog还原点一致的情况下进行配置

1:配置主服务器,修改/etc/my.cnf

[root@es1 ~]# vim /etc/my.cnf

[client]
default-character-set=utf8

[mysqld]

character-set-server=utf8
validate_password_policy=0
validate_password_length=6

log-bin=mysql1-bin
server_id=1
binlog_format=MIXED

[root@es1 ~]# systemctl restart mysqld  #重启数据库

2:新建一个用户授予器复制权限允许其从从服务器slave访问

mysql> grant select replication slave on *.* to ‘replicater’@’192.168.12.%’ identified by ‘pwd123’;

mysql> show master status\G  #查看主服务器状态 

mysql主从同步与读写分离插图

注意 :当在授予权限时出现密码安全问题时

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个就是初始设置密码策略的问题:先查看密码策略

mysql> show variables like ‘validate_password%’;

mysql主从同步与读写分离插图1

解决方案:

mysql> set global validate_password_mixed_case_count=2;  

关于 mysql 密码策略相关参数;
1)、validate_password_length  固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count  整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count  整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

3 配置从服务器

vi /etc/my.cnf

[client]

[client]
default-character-set=utf8   #设置数据库客户端编码utf8
[mysqld]
character-set-server=utf8     #设置服务端编码utf8
validate_password_policy=0    #密码策略密码复杂度
validate_password_length=6  #密码长度
log-bin=mysql2-bin            #bin-log日志前缀
server_id=2            #数据库服务器主机id
binlog_format=MIXED      #日志格式

[root@es2 ~]# systemctl restart mysqld

[root@es2 ~]# mysql -uroot -p

mysql> change master to master_host='192.168.12.119',     #指定主服务器的ip地址
    ->  master_user='replicater',                #指定主库授权用户用户名
    ->  master_password='12345678',               #授权用户密码
    ->  master_log_file='mysql1-bin.0000001',        #主库bin-log日志
    ->  master_log_pos=123;                   #指定备份节点
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> START SLAVE; //启动复制

[root@es2 ~]# ls -lh /var/lib/mysql/        注 :master.info  ,MASTER 主服务器的设置信息自动存为 master.info 文件

mysql主从同步与读写分离插图2

mysql> show slave status\G

mysql主从同步与读写分离插图3


mysql主从同步与读写分离插图4

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2019/11/09/mysql-master-slave/