zoukankan      html  css  js  c++  java
  • mysql主从复制搭建(普通安装和docker方式)

    centos7普通安装

    mysql下载

    下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz。上传至linux机/opt 目录下

    单机安装mysql

    安装准备工作

    tar -zxvf mysql-5.7.27-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
    
    cd /usr/local
    
    mv mysql-5.7.27-linux-glibc2.12-x86_64/ mysql-5.7.27
    
    cd mysql-5.7.27/
    
    mkdir data
    
    yum list installed | grep mariadb #检查 linux 是否安装了 mariadb数据库
    
    yum -y remove mariadb-libs.x86-64 # 有的话卸载掉,否则会和mysql冲突
    
    useradd mysql # mysql用户和用户组,用于安装和使用mysql
    
    groupadd mysql
    

    切换到mysql-5.7.27/bin目录下执行mysql的mysqld 命令初始化数据库的基本信息

    ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql-5.7.27/data --basedir=/usr/local/mysql-5.7.27
    参数说明:
    --initialize 初始化mysql,创建mysql的root, 随机生成密码。记住密码,登录msyql使用。
    --user执行msyqld 命令的linux用户名
    --datadir : mysql数据文件的存放位置,目录位置参照本机的设置。
    --basedir : msyql安装程序的目录,目录位置参照本机的设置。
    该命令执行后,会生成一个临时的mysql数据库root用户的密码,请先拷贝出来记住,后续第一次登录mysql
    例如#/T3ds.jhdUM
    

    启用安全功能:在服务器与客户机之间来回传输的所有数据进行加密。通过证书提供了身份验证机制,mysql命令程序,mysql_ssl_rsa_setup提供了开启数据加密功能,生成数字证书。在mysql-5.7.27/bin目录下执行命令

    ./mysql_ssl_rsa_setup --datadir=/usr/local/mysql-5.7.27/data
    

    mysql安装后,需要更改mysql-5.7.27整个文件夹目录权限,更改所属的用户和组,是之前创建的mysql用户。执行命令

    chown -R mysql:mysql /usr/local/mysql-5.7.27/
    

    创建mysql配置文件(存在则替换掉),vi /etc/my.cnf,添加如下配置

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    [mysqld]
    #跳过权限表校验
    #skip-grant-tables
    skip-name-resolve
    #设置3306端口
    port = 3306
    # 设置mysql的安装目录
    basedir=/usr/local/mysql-5.7.27
    # 设置mysql数据库的数据的存放目录
    datadir=/usr/local/mysql-5.7.27/data
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 表名不区分大小写
    lower_case_table_names=1
    max_allowed_packet=16M
    log-error=/var/log/mysqld.log
    pid-file=/usr/local/mysql-5.7.27/data/mysqld.pid
    

    启动MySQL服务,mysql-5.7.27/bin目录下执行命令

     ./mysqld_safe & #mysqld_safe程序会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它
     ps -ef | grep mysql # 查看mysql是否启动
    

    重置mysql登陆密码和访问权限

    ./mysql -u root -p #输出之前生成的密码,进入mysql client
    
    alter user 'root'@'localhost' identified by '123456'; #修改root账号的密码
    
    grant all privileges on *.* to root@'%' identified by '123456';#远程客户端访问授权
    具体参数意思如下:
    	其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表
    	root@'%' 中的root表示用户名
    	%表示ip地址,%也可以指定具体的ip地址
    exit #退出客户端
    

    停止mysql

    ./mysqladmin -uroot -p shutdown #输入root密码退出
    

    开放防火墙

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

    将mysql配置为一个服务,以方便管理,做一下操作后执行service mysqld start即可启动mysql ,service mysqld stop停止mysql。

    cp /usr/local/mysql-5.7.27/support-files/mysql.server /etc/init.d/mysqld
    vi /etc/init.d/mysqld #打开后设置basedir和datadir的路径
    basedir=/usr/local/mysql-5.7.27
    datadir=/usr/local/mysql-5.7.27/data
    

    主从设置

    进入master服务器,打开mysql客户端,在主数据库上创建同步账号后退出客户端

    ./mysql -u root -p #进入客户端
    grant replication slave on *.* to 'repl'@'192.168.1.135' identified by '123456';
    FLUSH PRIVILEGES; #注意授权的ip为从服务器的ip,%代表任何ip都可以使用
    

    配置主节点,开启binlog,vi /etc/my.cnf,添加如下配置

    log-bin=mysql-bin # 日志文件名前缀
    server-id=1 # 在集群中的唯一id,值可以为1~2^32-1的整数
    

    重启主节点mysql,进入客户端,查看主节点状态

    show master status;#主要为了查看 当前二进制日志名和偏移量
    

    配置从节点,添加配置,vi /etc/my.cnf

    server-id=2
    

    重启从节点mysql,进入从节点mysql客户端,执行 CHANGE MASTER TO 语句设置同步的主库

    CHANGE MASTER TO MASTER_HOST='192.168.1.125',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=154;
    START SLAVE;#开启从库
    show slave status #查看同步状态,SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启
    

    在主库执行下列命令,查看从库是否产生对应的数据库、表和数据

    CREATE DATABASE orders CHARACTER SET 'utf8';
    
    use orders;
    
    CREATE TABLE t_order (
    order_id BIGINT PRIMARY KEY,
    order_time DATETIME,
    customer_id BIGINT,
    order_amount DECIMAL(8,2)
    );
    

    docker容器快速搭建mysql主从

    首先拉取docker镜像,我们这里使用5.7版本的mysql

    docker pull mysql:5.7
    

    然后使用此镜像启动容器,启动master容器

    docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    

    进入容器

    docker exec -it mysql-master /bin/bash
    

    进入容器后,升级apt-get,安装vi编辑器

    apt-get update #升级安装工具,需联网
    apt-get install vim
    exit #退出容器
    

    根据修改后的容器创建新的镜像,避免重复下载和安装vi编辑器

    docker commit dd16f3e7be05 localmysql:1.0
    

    根据新镜像启动Slave:

    docker run -p 3340:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d localmysql:1.0
    

    进入master容器,打开配置文件 vi /etc/mysql/my.cnf,添加如下配置

    [mysqld]
    log-bin=mysql-bin # 日志文件名前缀
    server-id=1 # 在集群中的唯一id,值可以为1~2^32-1的整数
    

    进入mysql客户端 mysql -u root -p,执行如下命令创建同步账号

    grant replication slave on *.* to 'root'@'%' identified by '123456';
    FLUSH PRIVILEGES; #注意授权的ip为从服务器的ip,%代表任何ip都可以使用,root表示同步所使用的用户,也可以单独创建同步的用户
    

    退出mysql客户端,重启mysql:service mysql restart,此时容器会退出,重新启动容器,并进入mysql客户端,查看master状态

    show master status #记下file和position的值
    

    进入slave容器,打开配置文件 vi /etc/mysql/my.cnf,添加如下配置

    [mysqld]
    server-id=2
    

    重启mysql,此时容器会退出。查看master容器的ip

    docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id
    

    启动slave容器并进入容器,进入mysql客户端,执行如下命令

    CHANGE MASTER TO MASTER_HOST='172.17.0.2',MASTER_PORT=3306,MASTER_USER='root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=154;
    start slave;#开启主从
    show slave status G #查看同步状态,SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启
    
  • 相关阅读:
    RESTful Web 服务
    关于 Java API for RESTful Web Services (JAX-RS) 介绍
    IPV6正则表达式
    使用MyBatis-generator 自动生成MyBatis代码
    JSON.stringfy妙用
    浅拷贝与深拷贝
    vue双向绑定原理与实践
    vue路由当中的导航钩子中关于next()方法的理解
    Promise 异步备忘
    封装van-popup为自己的弹窗组件解决v-moel props单向数据流不能修改的问题。
  • 原文地址:https://www.cnblogs.com/hhhshct/p/13862974.html
Copyright © 2011-2022 走看看