zoukankan      html  css  js  c++  java
  • Centos6上进行Mysql5.6安装和主从复制部署

     

    系统:centos6

    数据库:mysql5.6

    服务器:两台,一主一从

    一、Mysql5.6二进制版本的安装

      Mysql的安装在有三种模式,第一种是yum安装,第二种是二进制模式的安装,第三种是源码编译安装。本篇采用的是二进制安装方式。 

            

      安装前有几个工作建议先做一下,尽量排除掉一切可能失败的因素。

      1.在安装前要先检查下系统中是不是已经安装过mysql,如果安装,要先卸载Mysql,将相关mysql的东西全部删除。

      2.Mysql用到端口3306,要在防火墙方面上将两个端口打开,重点:如果是阿里云服务器,它的防火墙端口在还有一层过滤,需要等上控制台,在规则里面把端口给放开。

    下载安装包

    # cd  /usr/local            安装目录在/usr/local,先进入目录
    
    #wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz    下载linux平台下的64位的Mysql5.6
    
    #tar zxvf mysql-5.6.38-linux-glibc2.12-x86_64.tar.gz  -C /usr/local  将其解压到/usr/local
    
    #ln –sv mysql-5.6.38-linux-glibc2.12-x86_64  mysql  将解压后的文件建立软连接名字为 mysqlmv mysql-5.6.38-linux-glibc2.12-x86_64  mysql  将解压后的文件重命名为mysql

    准备Mysql用户

    #groupadd mysql                           增加mysql用户组
    
    #useradd -s /sbin/nologin -M -g mysql mysql        增加mysql用户
    
                                   -s表示指定用户所用的shell,此处为/sbin/nologin,表示不登录。
                                   -M表示不创建用户主目录。
    
                                   -g表示指定用户的组名为mysql。
    
                                   -最后的mysql表示用户名。
     

    准备数据库实例datadir目录

    #  chown mysql:mysql /usr/local/mysql/data     更改data目录的所有者为mysql用户

    # /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data   初始化实例3306的目录 

      初始化后的data目录

     

    准备配置文件

      在/etc文件夹下建立my.cnf,配置如下内容。

      #vim /etc/my.cnf

    [client]    
    port        = 3306     
    socket      = /tmp/mysql.sock
    [mysqld]    
    port        = 3306     
    socket      = /tmp/mysql.sock   
    basedir   = /usr/local/mysql
    datadir    = /usr/local/mysql/data

    配置环境变量(此步骤非必须,可以省略

      #  vim /etc/profile   

      添加export PATH=/usr/local/mysql/bin/:$PATH

      #source /etc/profile   重新加载下配置文件,使配置立即生效

           

    数据库的启动

      启动Mysql有好几种方式,I,II,两种模式实质上最终都是是调用III.mysqld_safe启动。

      I.可以将mysql配成服务,用server mysql start启动。

      II.可以用mysqld -defaults-file=/etc/my.cnf --user=root 这种方式启动。

      III.还可以用mysqld_safe --defaults-file=/etc/my.cnf 这种方式启动。

     

    • I如果是将mysql配成服务
      # cp /usr/local/mysql/support-files/mysql.server  /etc/rc.d/init.d/mysqld    
    
      # chkconfig --add mysqld        将mysqld服务添加到开机自启列表
    
      # chkconfig mysqld on        设置mysqld服务开机自启
    
      # service mysqld start        启动mysql

        

    • II 如果以mysqld 方式启动
    # /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf  --user=root &  --user=root参数必须加,要不然报错

      

     

    • III 如果以mysqld_safe方式启动
    #/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf  2>&1 >/dev/null &    

      

    修改管理员密码并测试

      # /usr/local/mysql/bin/mysqladmin -u root password 'admin'  设置管理员密码
      # /usr/local/mysql/bin/mysql -u root -p              测试密码输入

    至此,Mysql已经安装完成,另一台服务器mysql的安装也是这样,接下来便开始进行主从复制。

    二、Mysql主从复制

            我们在两台服务器上都装上Mysql,然后一台作为主服务器,一台作为从服务器,作为一主一从模式。

            Master:172.23.216.86

            Slvae :172.23.216.87

    1.主从复制原理

      整体上来说,复制有3个步骤:  

      ①master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

      ②slave将master的binary log events拷贝到它的中继日志(relay log);

      ③slave重做中继日志中的事件,将改变反映它自己的数据。

       

    2.主从复制的配置

      ①主数据库实例设置server-id和开启bin-log;

      ②主数据库实例创建用于同步的账号;

      ③从数据库实例设置server-id;

      ④从数据库实例配置同步参数;

      ⑤从数据库实例启动同步开关。

      ①主数据库实例设置server-id和开启bin-log

      在master的my.cnf文件中的[mysqld]节点出添加server-id和bin-log

      # vim /etc/my.cnf

    [mysqld]
    
    log-bin= /usr/local/mysql/data/mysql-bin   二进制日志路径格式
    
    server-id  = 1                         主库从库的id不能相同
    
    replicate-ignore-db = mysql            在进行主从同步时忽略mysql这个库

      之后在数据库主库中查看是否开启

    mysql>show variables like "server_id";   显示为1表示正确
    
    mysql>show variables like "log_bin";    显示为ON表示二进制日志开启

        

    主库创建用于同步的账号

    mysql>GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%' identified by '123456';  创建一个用于从库复制的账号
    
    mysql>flush privileges;    刷新下权限列表
    
    mysql> show master status G;  查看主库状态

    从数据库设置server-id

      在slave中my.cnf的[mysqld]节点出添加server-id

      # vim /etc/my.cnf

    [mysqld]
    
    server-id  = 2

    在slave中配置同步参数

    mysql>CHANGE MASTER TO
    
    MASTER_HOST=' 172.23.216.86',        主库的ip地址
    
    MASTER_PORT=3306,                   端口号
    
    MASTER_USER='replication',           账号
    
    MASTER_PASSWORD='123456',            密码
    
    MASTER_LOG_FILE='mysql-bin.000002',  开始复制的文件
    
    MASTER_LOG_POS=404;                  复制的位置


    ⑤从数据库启动同步开关
      

    mysql>start slave;             从库执行start slave
    
    mysql>show slave status G;       查看从库状态

      至此,主从复制完成。现在在master上进行数据库相关操作,之后就会发现从库中也有相关内容。

    ------------------------------------------------------------------------其他-------------------------------------------------------------

    1.彻底解除主从复制关系
    1). stop slave;
    2). reset slave; 或直接删除master.info和relay-log.info这两个文件;
    3). 修改my.cnf删除主从相关配置参数。

    2.让slave不随MySQL自动启动
    修改my.cnf 在[mysqld]中增加 skip-slave-start 选项。

  • 相关阅读:
    前端
    pymysql
    Linux下PostgreSQL 的安装与配置
    PostgreSQL 连接问题 FATAL: no pg_hba.conf entry for host
    PostgreSQ 连接问题 FATAL: no pg_hba.conf entry for host
    中文环境下PostgreSQL的使用
    初学者遇到的PostgreSQL字符集问题的解决
    PostgreSQL 图形化客户端工具有哪些
    PostgreSQL 图形化客户端工具的使用技巧你都get了吗?
    PostgreSQL新手教程
  • 原文地址:https://www.cnblogs.com/sdadx/p/7833882.html
Copyright © 2011-2022 走看看