zoukankan      html  css  js  c++  java
  • centos7下部署mysql主从复制

    首先大致看一下这个图

    环境说明:

    系统:centos7

    IP:master:192.168.7.235 

           slave:192.168.7.226

    mysql版本MySQL-5.7

    1.Master

    下载安装包:

    wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz

    2.更新操作系统:yum -y update   更新完成后进行重启

    3.重启后安装依赖包: yum -y install gcc gcc-c++ openssl openssl-devel zlib zlib-devel libaio wget lsof vim-enhanced sysstat ntpdate

    4.创建mysql用户:useradd mysql

    5.创建目录:mkdir /opt/mysql

    6.将数据库包解压到/opt/mysql中   tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz -C /opt/mysql/

    7.修改解压后的目录的属主属组:chown -R mysql:mysql /opt/mysql/mysql-5.7.21-linux-glibc2.12-x86_64/

    8.将解压后的安装包软连接到其他目录下: ln -s /opt/mysql/mysql-5.7.21-linux-glibc2.12-x86_64/ /usr/local/mysql

    9.更改软连接后的属主属组:chown mysql:mysql /usr/local/mysql/

    10.创建数据目录:mkdir /data/mysql/mysql3306/{data,logs,tmp} -p

    11.更改数据目录的属主属组:chown -R mysql:mysql /data/

    12.查看是否创建成功:tree /data/

    13.修改主数据库的配置文件:vim /etc/my.cnf

    [mysqld]
    user                    = mysql
    basedir         = /usr/local/mysql
    datadir         = /data/mysql/mysql3306/data
    socket          = /tmp/mysql3306.sock
    tmpdir          = /data/mysql/mysql3306/tmp
    server-id               =1
    log-error               = error.log
    binlog_format   = row

    14.进行初始化:

    /usr/local/mysql/bin/mysqld  --initialize --user=mysql --basedir=/usr/local/mysql/   --datadir=/data/mysql/mysql3306/data/

    15.设置数据库的开机自启动:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

    16.启动服务:如果启动数据库失败,提示系统缺少PID文件,要按照一下的启动方法进行初始化,这个PID文件是数据库初始化的时候自动创建的,如果没有创建成功的话可能由于系统本身有mariadb,所以要指定mysql的路径--basedir=/usr/local/mysql/   --datadir=/data/mysql/mysql3306/data/)

    service mysqld start

    17.查看数据库端口:ps aux | grep mysql

    18.配置环境变量:echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

                                 source /etc/profile

    19.首次登录数据库:

    1)首先查看数据库的初始密码:cat /data/mysql/mysql3306/data/error.log | grep password

    2)mysql -S /tmp/mysql3306.sock -p

    3)修改初始密码:mysql> alter user user() identified by 'password';

    20.打开binlog:binlog是开启mysql主从复制的必要条件

    Vim /etc/my.cnf

    log-bin=/data/mysql-bin

    重启mysql:service mysqld restart

    21.查看binlog是否生效: ls /data/   (#是否有mysql-bin.00001

    22.添加允许主从复制的访问用户:

    mysql -S /tmp/mysql3306.sock -p

    grant replication slave on *.* to 'test'@'192.168.7.%' identified by 'password';

     flush privileges;  刷新

    flush table with read lock;   锁定库,暂停写入

    show master status;    记录musql-bin 的号码和position号

    mysqldump -uroot -p -S /tmp/mysql3306.sock -A -B --events --master-data=1 >/opt/rep.sql     将数据库中的数据导出,后面进行同步数据的时候使用

    23.解锁数据库:mysql> unlock tables;  

    进行配置slave

    24.重复上面的1-12步骤

    25.在上面的第13步骤的时,修改配置文件中的server-id,这个server-id是唯一的,只要不与主数据库一样即可

    26.将主数据库中导出的数据导入slave中:scp 192.168.7.235:/opt/rep.sql /opt/

                                                                      mysql -uroot -p -S /tmp/mysql3306.sock </opt/rep.sql

    27.进入数据库进行配置:mysql -S /tmp/mysql3306.sock -p

    28.先停止数据库的slave功能:stop slave;

    29.将从数据库指向master:

    change master to

    MASTER_HOST='192.168.7.235',            写主数据库的IP

    MASTER_PORT=3306,        

    MASTER_USER='test',                     写主数据用于进行主从连接的用户

    MASTER_PASSWORD='password',

    MASTER_LOG_FILE='mysql-bin.000001',       在主数据库上通过show master status; 查看到的file  

    MASTER_LOG_POS=1499;                      在主数据库上通过show master status; 查看到的position

    30.启动slave:start slave;

    31.show slave statusG;    查看slave状态,G是以换行的方式查看

    #slave_IO_Running:yes

       #Slave_SQL_Running:yes两条都为yes时表示成功

    当Slave_SQL_Running为no或者报错时,可能需要检查29步,可以重新做28-31步

  • 相关阅读:
    python
    C++的socket编程学习
    GooglePlay
    GooglePlay
    Admob
    cocos2dx
    cocos2dx
    cocos2dx
    cocos2dx
    浅谈白鹭Egret
  • 原文地址:https://www.cnblogs.com/lkun/p/9037373.html
Copyright © 2011-2022 走看看