zoukankan      html  css  js  c++  java
  • mysql 主从复制

    master安装和配置:


    为mysql的安装提供前提环境和初始化安装mysql

    创建数据库目录
    # mkdir /data/mysql –pv
    # mkdir /data/mysql/datafile
    # mkdir /data/mysql/logfile
    创建mysq用户
    # useradd -r mysql
    修改权限
    # chown -R mysql.mysql /data/mysql/
    使用mysql-5.5通用二进制包安装
    解压mysql软件包
    # tar xf mysql-5.5.28-linux2.6-i686.tar.gz-C /usr/local/
    创建连接,为了方便查看mysql的版本等信息
    # cd /usr/local/
    #ln –sv mysql-5.5.28-linux2.6-i686.tar.gzmysql
    修改属主属组
    # cd mysql
    # chown -R root.mysql ./*
    初始化数据库
    # scripts/mysql_install_db –user=mysql --datadir=/mydata/data/
    提供配置文件
    # cp support-files/my-large.cnf /etc/my.cnf
    提供服务脚本
    # cp support-files/mysql.server /etc/rc.d/init.d/mysqld
    添加至服务列表
    # chkconfig --add mysqld
    # chkconfig --list mysqld
    # chkconfig mysqld on
    编辑配置文件,提供数据目录
    # vim /etc/my.cnf
    # The MySQL server 修改mysqld服务器端的内容
    log-bin=mysql-bin 主服务器二进制日志文件前缀名
    log-bin-index=mysql-bin.index 索引文件
    innodb_file_per_table= 1 开启innodb的一表一个文件的设置
    server-id = 1 必须是唯一的
    datadir =/mydata/data 数据目录路径
    启动mysql服务
    # servicemysqld start
    为了便于下面的测试,设置环境变量
    # vim/etc/profile.d/mysql.sh
    export PATH=$PATH:/usr/local/mysql/bin
    执行环境变量脚本,使其立即生效
    # . /etc/profile.d/mysql.sh


    mysql的安装配置完成,下面增加一个用于同步数据的账户并设置相关的权限吧!

    建立用户账户
    mysql> grant select on *.* to 'repl'@'10.77.4.%' identified by 'LSzhYccfwVtReKY9';

    mysql>grant REPLICATION CLIENT on *.* to 'repl'@'10.77.4.%';
    mysql>grant REPLICATION SLAVE on *.* to 'repl'@'10.77.4.%';
    刷新数据使其生效
    mysql> flush privileges;

    至此我们mysql的Master设置完成,下面进行slave端的设置吧!

    Slave安装配置:

    安装环境配置:

    创建mysql数据库目录
    # mkdir /mydata/data –pv
    创建mysql用户
    # useradd -r mysql
    修改数据目录权限
    # chown -R mysql.mysql /mydata/data/
    使用mysql-5.5通用二进制包安装mysql
    解压mysql软件包
    # tar xf mysql-5.5.28-linux2.6-i686.tar.gz-C /usr/local/
    创建连接,便于查看mysql的版本等信息
    # cd /usr/local/
    # ln –sv mysql-5.5.28-linux2.6-i686.tar.gzmysql
    修改mysql属主属组
    # cd mysql
    # chown -R root.mysql ./*
    初始化mysql数据库
    # scripts/mysql_install_db –user=mysql--datadir=/mydata/data/
    提供mysql配置文件
    # cp support-files/my-large.cnf /etc/my.cnf
    提供服务脚本
    # cp support-files/mysql.server /etc/init.d/mysqld
    添加至服务列表
    # chkconfig --add mysqld
    编辑配置文件
    # vim /etc/my.cnf
    # The MySQL server
    #log-bin=mysql-bin 禁用二进制日志,从服务器不需要二进制日志文件
    datadir = /mydata/data mysql的数据目录
    relay-log = relay-log 设置中继日志
    relay-log-index = relay-log.index 中继日志索引
    innodb_file_per_table = 1
    server-id = 2 id不要和主服务器的一样
    设置环境变量
    # vim/etc/profile.d/mysql.sh
    export PATH=$PATH:/usr/local/mysql/bin
    执行此脚本(导出环境变量)
    # . /etc/profile.d/mysql.sh
    启动服务
    # service mysqld start


    到这slave服务的mysql安装和配置完成,下面启动slave复制吧,开启之前先查看下从服务上的二进制文件吧

    mysql> show master status; #在Master上执行查看二进制文件

    在从服务器上开启复制功能
    change master to master_host='10.77.4.8',master_user='repl',master_password='LSzhYccfwVtReKY9',master_log_file='mysql-bin.000002',master_log_pos=876;

    开启复制功能
    mysql>start slave;

    杂项:

    • 根据报警找出出错的记录:

    /usr/local/mysql/bin/mysqlbinlog -v --stop-position=156190985 /data/mysql/datafile/mysql-bin.000006 > /data/f.log

    cat /data/f.log | awk '/end_log_pos 156190985/ {print NR}'

    cat /data/f.log | awk 'NR==3989111,NR==3989131'

    • 限定只同步哪张表 .% 表示忽略数据不一致的错误

    replicate_wild_do_table=pgenius.%

    replicate_wild_do_table=pgznty.%

    • 跳过报错

    1.跳过指定数量的事务:
    mysql>stop slave ;
    mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务
    mysql>slave start


    2.修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误
    vi /etc/my.cnf
    [mysqld]
    #slave-skip-errors=1062,1053,1146,1032 #跳过指定error no类型的错误
    #slave-skip-errors=all #跳过所有错误

  • 相关阅读:
    OpenSSH服务——密钥登录
    进程管理
    磁盘管理
    文件系统
    shell命令手册
    第一次常用命令手册
    远程连接mobaxterm安装使用
    Linux 系统CentOS 7 64 位安装
    PythonI/O进阶学习笔记_11.python的多进程
    PythonI/O进阶学习笔记_10.python的多线程
  • 原文地址:https://www.cnblogs.com/champaign/p/6861324.html
Copyright © 2011-2022 走看看