MySQL集群配置

作者: 青青玉立 | 来源:发表于2018-05-25 16:18 被阅读0次

MySQL数据同步

[参考链接](https://www.cnblogs.com/phpstudy2015-6/p/6687480.html#_label0)

 [参考链接](https://www.cnblogs.com/phpstudy2015-6/p/6687480.html#_label13)

准备3台服务器

     192.168.0.163(MASTER)

     192.168.0.167(SLAVE)

     192.168.0.173(SLAVE)

获取源码资源包(3台服务器均执行)

wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm

安装源码资源包(3台服务器均执行)

rpm -ivh mysql57-community-release-el7-10.noarch.rpm

通过资源包安装mysql(3台服务器均执行)

yum install mysql-server -y

echo deadline > /sys/block/sda/queue/scheduler

修改my.conf(3台服务器均执行)

    vim /etc/my.cnf

    [client]

    default-character-set = utf8mb4

    [mysqld]

    port = 3306

    symbolic-links=0

    slow_query_log = 1

    long_query_time = 1

    explicit_defaults_for_timestamp = 1

    datadir = /data/mysql

    secure_file_priv = /tmp

    default_storage_engine = InnoDB

    socket = /var/lib/mysql/mysql.sock

    log-error = /var/lib/mysql/mysql.log

    slow_query_log_file = /var/lib/mysql/mysql-slow.log

    ESC

    :wq

    # MASTER服务器[mysqld]下加上

    server-id = 1

    binlog-format = Row

    log-bin = /data/mysql/mysql-bin.log

    # SLAVE服务器[mysqld]下加上

    # 192.168.0.167(SLAVE)

    server-id = 2

    relay-log=bogon-relay-bin

    # 192.168.0.173(SLAVE)

    server-id = 3

    relay-log=localhost-relay-bin

    # 这里一定要注意

    relay-log = [服务器名]-relay-bin

添加mysql用户(3台服务器均执行)

user add -s /sbin/nologin -M mysql

创建数据文件目录、所属组、用户改为mysql(3台服务器均执行)

    mkdir /data/

    mkdir /data/mysql/

    mkdir /var/run/mysqld/

    chown -R mysql:mysql /data/mysql/

    chown -R mysql:mysql /var/lib/mysql/

    chown -R mysql:mysql /var/run/mysqld/

    chown -R mysql:mysql /var/lib/mysql-files/

    chown -R mysql:mysql /var/lib/mysql-keyring/

启动数据库,生成socket文件(3台服务器均执行)

    systemctl enable mysqld

    systemctl start mysqld

    # 因为配置文件中指定了

    log-error = /var/lib/mysql/mysql.log

    # 所以初始密码在如下文件中

    /var/lib/mysql/mysql.log

    cat /var/lib/mysql/mysql.log|grep password

    # 结果显示

    A temporary password is generated for root@localhost: *********

修改数据库初始密码(3台服务器均执行)

    mysql -u root -p

    # 输入原始密码

    *********

    # 设置允许使用弱密码

    SET GLOBAL validate_password_policy=0;

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'root12345';

    QUIT;

初始化数据库(3台服务器均执行)

    # 如果是数据库【安装】则只执行下面这步(除了密码一律选择Y)

    mysql_secure_installation

    # 如果是数据库【升级】则只执行下面这步(*********表示数据库之前的密码)

    mysql_upgrade -u root -p

    *********

配置防火墙(3台服务器均执行)

    systemctl enable firewalld

    systemctl start  firewalld

    firewall-cmd --permanent --zone=public --add-port=3306/tcp

    firewall-cmd --reload

接下来就是数据同步相关的处理

创建从服务器(SLAVE服务器、读服务器)用户

    # 192.168.0.167(SLAVE)

    # 192.168.0.173(SLAVE)

    GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'192.168.0.%' IDENTIFIED BY 'GENGzhihuan123' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

创建主服务器允许哪些从服务器访问

    # 192.168.0.163(MASTER)

    GRANT REPLICATION SLAVE ON *.* TO 'mysql'@'192.168.0.%' IDENTIFIED BY 'GENGzhihuan123';

    FLUSH PRIVILEGES;

查看二进制文件名与位置

    # 192.168.0.163(MASTER)

    SHOW MASTER STATUS;

 从服务器中指定二进制文件路径

    # 192.168.0.167(SLAVE)

    # 192.168.0.173(SLAVE)

    CHANGE MASTER TO

    MASTER_HOST='192.168.0.163',

    MASTER_USER='mysql',

    MASTER_PASSWORD='GENGzhihuan123',

    MASTER_LOG_FILE='mysql-bin.000003',

    MASTER_LOG_POS=154;

    # 这里注意

    # MASTER_HOST:      主服务器IP

    # MASTER_USER:      主服务器允许从服务器访问的用户

    # MASTER_PASSWORD:  主服务器允许从服务器访问的密码

    # MASTER_LOG_FILE:  主服务器执行SHOW MASTER STATUS;后的File字段的值

    # MASTER_LOG_POS:  主服务器执行SHOW MASTER STATUS;后的Position字段的值

    SHOW SLAVE STATUS\G

    # 如果有如下状态

    # Slave_IO_Running:  Yes

    # Slave_SQL_Running: Yes

    # 表示配置成功!!!

在主服务器中创建数据库,查看从服务器是否同步产生了相同的数据库

在主服务器中创建数据表,查看从服务器是否同步产生了相同的数据表

在主服务器表中创建数据,查看从服务器表是否同步产生了相同的数据

如果以上3个步骤正常,则主从服务器搭建成功

为了能够让所有服务器分担数据查询的压力,我们这样做

    # 以下方案可以不安装mysql-proxy、lua实现查询压力的分担,对于

    # 读取要求高的网站使用较合理,但如果数据库设计中如果索引比较

    # 多、写入操作频繁,则要使用读写分离方案

    # 192.168.0.163(MASTER)

    GRANT ALL PRIVILEGES ON *.* TO 'writer'@'192.168.0.%' IDENTIFIED BY 'GENGzhihuan123' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

    # 192.168.0.167(SLAVE)

    # 192.168.0.173(SLAVE)

    GRANT SELECT ON *.* TO 'reader'@'192.168.0.%' IDENTIFIED BY 'GENGzhihuan123' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

为了实现读写分离方案,这里要涉及两个工具mysql-proxy、lua

相关文章

网友评论

    本文标题:MySQL集群配置

    本文链接:https://www.haomeiwen.com/subject/ogbyjftx.html