zoukankan      html  css  js  c++  java
  • Centos7搭建Mysql-5.6,及主从复制。

    Server1:192.168.1.189  (主)

    Server2:192.168.1.190  (从)

    1、关闭默认的firewalld防火墙,安装iptables。

    systemctl disable firewalld

    安装iptables

    yum -y install iptables*

    并设置iptables开机自启动

    2、开始安装mysql-5.6.38

    检查是否默认安装了mysql及mariadb,默认安装了就卸载掉。

    安装相关依赖包。

    yum -y install cmake bison git ncurses-devel gcc gcc-c++

    添加一个mysql使用的用户。

    下载mysql-5.6.38.tar

    wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.38.tar.gz

    解压下载好的软件包。

    tar -zxvf mysql-5.6.38.tar.gz

    创建数据目录及安装目录。

    mkdir -p /usr/local/mysql

    mkdir -p /usr/local/mysql/data

    查找一下是否有这个文件CMakeCache.txt,有的话就删除。

    find / -name CMakeCache.txt

    进入解压包进行安装,路径根据自己服务器情况进行指定。

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql_3306.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1

    检查一下是否有错,若返回值不为0就有错误

    进行make编译安装,编译时间较长。

    make && make install

    安装完成后创建日志需要的目录

    mkdir -p /usr/local/mysql/log/errlog/  #错误日志目录

    mkdir -p /usr/local/mysql/log/binlog/  #log-bin日志目录

    mkdir -p /usr/local/mysql/log/slowlog/  #慢查询日志目录

    修改目录的属主属组,及权限。

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

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

    设置可读可写权限。

    创建mysql-sever系统表。

    cd /usr/local/mysql/

    ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

    报错了需要Perl的依赖

    然后在执行上面的语句就好了。

    将配置文件移动到/etc下,配置问价你的默认路径。

    根据您公司环境,及服务器进行配置)

    主配置my.cnf

    [client]

    #password=your_password

    port=3306

    socket=/usr/local/mysql/mysql_3306.sock

    default-character-set=UTF8

    [mysqld]

    basedir=/usr/local/mysql

    datadir=/usr/local/mysql/data

    port=3306

    socket=/usr/local/mysql/mysql_3306.sock

    #[mysqld_safe]

    log-error=/usr/local/mysql/log/errlog/error.log

    pid-file=/usr/local/mysql/mysql.pid

    user=mysql

    tmpdir=/tmp

    skip-name-resolve

    skip-external-locking

    lower_case_table_names=1

    server_id=1

    binlog_format=row

    log_bin_trust_function_creators=1

    log_bin=/usr/local/mysql/log/binlog/mysql-bin

    log-slave-updates

    #设置log-bin日志删除30之前的,不删除会产生很大的日志

    expire_logs_days=30

    key_buffer_size=4024M

    max_allowed_packet=256M

    max_heap_table_size=256M

    tmp_table_size=256M

    sort_buffer_size=128K

    read_buffer_size=4M

    read_rnd_buffer_size=8M

    myisam_sort_buffer_size=64M

    thread_cache_size=64

    query_cache_size=64M

    max_connections=1000

    max_connect_errors=1024

    ##连接超时##

    wait_timeout=172800

    interactive_timeout=172800

    table_open_cache = 400

    expire_logs_days=10

    innodb_buffer_pool_size=2G

    innodb_file_per_table=1

    innodb_log_buffer_size=32M

    innodb_open_files=800

    sync_binlog=0

    #打开慢查询日志功能

    slow_query_log = 1

    #超过2秒的查询记录下来

    long_query_time = 2

    ##记录下没有使用索引的查询

    log_queries_not_using_indexes = 0

    slow_query_log_file=/usr/local/mysql/log/slowlog/slowquery.log

    [mysqldump]

    quick

    max_allowed_packet = 16M

    [mysql]

    [isamchk]

    key_buffer_size = 128M

    sort_buffer_size = 128K

    [myisamchk]

    key_buffer = 128M

    sort_buffer_size = 128K

     配置启动脚本。

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

     

    在安装路径下先关闭一下mysql在启动。

    bin/mysqld stop

    启动mysql

    软连接mysql使用mysql –uroot –p直接登陆。

    ln -s /usr/local/mysql/bin/mysql /usr/sbin/mysql

    登陆mysql

    mysql -u root –p   ###密码为空,回车进入

    设置密码

    use  mysql;

    update user set password=PASSWORD('123.com') where user='root';

    授权远程登陆。

    grant all privileges no *.* to root@”%” identified by “123.com”;

    从服务器搭建:

    从服务器基本的一些配置跟上面一样,除了目录不一样,用于区分主从。

    安装目录

    mkdir  -p  /usr/local/mysqlslave

    mkdir  -p  /usr/local/mysqlslave/data

           从服务器的cmake配置

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysqlslave -DMYSQL_UNIX_ADDR=/usr/local/mysqlslave/mysql_3306.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysqlslave/data -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1

    创建从数据库的日志目录,跟主不一样所以我体现在word

    /usr/local/mysqlslave/log/errlog/   #错误日志

    /usr/local/mysqlslave/log/binlog/   #log-bin日志

    /usr/local/mysqlslave/log/relaylog/  # 中继日志

    /usr/local/mysqlslave/log/slowlog/   #慢查询日志

    授权目录

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

    chown -R mysql:mysql /usr/local/mysqlslave/*

    chmod 777 -R /usr/local/mysqlslave

    chmod 777 -R /usr/local/mysqlslave/*

    创建mysql-server表

    cd /usr/local/mysqlslave/

    ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysqlslave/data

    报错了,缺少perl,安装一个依赖就好了,再次执行。

    再次执行就好了。

    从一样的,将my.cnf移动到/etc下面,进行配置。

    (根据您公司环境,及需求进行配置)

    从配置。Vim  /etc/my.cnf

    [client]     

    #password       = your_password

    port=3306

    socket=/usr/local/mysqlslave/mysql_3306.sock

    default-character-set=UTF8

    ## The MySQL server

    [mysqld]

    port=3306

    basedir=/usr/local/mysqlslave/

    socket=/usr/local/mysqlslave/mysql_3306.sock

    datadir=/usr/local/mysqlslave/data

    log-error=/usr/local/mysqlslave/log/errlog/error.log

    pid-file=/usr/local/mysqlslave/mysql.pid

    user=mysql #此处为mysql源码安装的系统用户名

    tmpdir=/tmp

    ##log_timestamps = SYSTEM

    ##explicit_defaults_for_timestamp=1

    skip-name-resolve

    skip-external-locking

    lower_case_table_names=1

    server_id=2

    binlog_format=row

    log_bin_trust_function_creators=1

    log_bin=/usr/local/mysqlslave/log/binlog/mysql-bin

    log-slave-updates

    ##设置log-bin日志删除30之前的,不删除会产生很大的日志

    expire_logs_days=30

    ### relay_log配置中继日志

    relay_log=/usr/local/mysqlslave/log/relaylog/mysql-relay-bin

    #

    key_buffer_size=4024M

    max_allowed_packet=256M

    max_heap_table_size=256M

    tmp_table_size=256M

    sort_buffer_size=128K

    read_buffer_size=4M

    read_rnd_buffer_size=8M

    myisam_sort_buffer_size=64M

    thread_cache_size=64

    query_cache_size=64M

    max_connections=1000

    max_connect_errors=1024

    wait_timeout=172800

    interactive_timeout=172800

    table_open_cache=400

    expire_logs_days=10

    innodb_buffer_pool_size=2G

    innodb_file_per_table=1

    innodb_log_buffer_size=32M

    innodb_open_files=800

    sync_binlog=0

    ## 打开慢查询日志功能

    slow_query_log=1

    ## 超过2秒的查询记录下来

    long_query_time=2

    ## 记录下没有使用索引的查询

    log_queries_not_using_indexes=0

    slow_query_log_file=/usr/local/mysqlslave/log/slowlog/slowquery.log

    [mysqldump]

    quick

    max_allowed_packet=16M

    [mysql]

    [isamchk]

    key_buffer_size=128M

    sort_buffer_size=128K

    [myisamchk]

    key_buffer=128M

    sort_buffer_size=128K

    ##[mysqlhotcopy]

    ##interactive_timeout

    先关闭一下数据库,在启动

    配置启动脚本。

    cp /usr/local/mysqlslave/support-files/mysql.server /etc/init.d/mysqld

    软连接mysql使用mysql –uroot –p直接登陆。

       ln -s /usr/local/mysqlslave/bin/mysql /usr/sbin/mysql

    启动mysql

    配置主从

    主my.cnf配置

    Server-id,master务器不能跟slave服务器的id一样。

    Bin-log日志的路径指定,要有写入权限。

    修改从的my.cnf配置

    在主库(master)中创建一个用户用于与从库同步的用户名和密码(这里我创建一个slave_user用户,密码为123.COM!),并给slave_user用户授权,以用于主库操作从库。

    create user "slave_user"@"192.168.1.190" identified by "123.COM!";

    grant replication slave on *.* to 'slave_user'@'192.168.1.190';

    flush privileges;

    select host from mysql.user; #查看用户是否创建成功

    查看master(主)状态

    show master status;

    这里的mysql-bin.000002,和Position值526,slave配置的时候会用到。

    导出master的数据到从服务器去,让数据一致。

    将数据上传至slave服务器。

    在slave(从)数据库导入主服务器的数据。

    配置slave,让其主从同步。

    mysql> change master to

        -> master_host='192.168.1.189',

        -> master_user='slave_user',

        -> master_password='123.COM!',

        -> master_log_file='mysql-bin.000002',

        -> master_log_pos=526,

        -> MASTER_CONNECT_RETRY=10;

    ##关于MASTER_CONNECT_RETRY,在主服务器宕机的情况下,从服务器线程重新尝试连接主服务器之前睡眠的秒数。如果主服务器.Info文件中的值可以读取则优先使用,如果未设置,默认为60秒。

    启动slave

    start slave;  

    ##关闭命令stop slave

    ##重启命令reset slave

    查看slave的状态。

    show slave status G

    只要Slave_IO_Running: Yes, Slave_SQL_Running: Yes,主从就搭建成功。若其中一项不为yes,查看mysql的错误日志。

    在主数据库创建一个库,看看是否同步。

    create database testdb;

    use testdb;

    create table book(

        -> id int(10),

        -> name varchar(15),

    -> size int);

    insert into book (id,name,size) values(1,"test",100);

    主库插入数据完毕后在从库查看,是否有数据,如果有数据则主从同步成功。

     

     

  • 相关阅读:
    汇编语言 第三章 寄存器
    汇编语言 第二章
    实验一 查看CPU和内存,用机器指令和汇编指令教程
    nginx的log、upstream和server
    高并发情况下Linux系统及kernel参数优化
    二进制方式安装docker(非root用户启动docker)
    redis
    redis配置文件详解
    Keepalived+LVS实现LNMP网站的高可用部署
    Nginx location相关配置说明
  • 原文地址:https://www.cnblogs.com/sxshaolong/p/11010641.html
Copyright © 2011-2022 走看看