zoukankan      html  css  js  c++  java
  • Amazon EC2安装mysql多实例并配置主从复制

    1、MySQL安装:

    EC2直接使用yum安装mysql非常方便:

    yum install mysql mysql-server mysql-libs
    此处安装了三个包

    完事之后能够直接使用
    service mysqld start
    启动mysql服务

    改动root密码:
    mysqladmin -u root -p password “root”

    2、使用mysqld_multi安装多实例mysql:

    vim /etc/my.cnf
    加入实例的配置信息

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    symbolic-links=0

    [mysqld_safe]
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

    以上是默认的配置信息,在mysqld下加入例如以下配置:

    #开启慢查询日志, 记录查询过长的 sql 语句。以便于优化

    log_slow_queries=/var/log/mysql/mysql-slow.log

    #开启 bin-log 日志,不用log-bin=xxx。试验时这样子无法启动mysql服务,不知为何

    log-bin

    #分配serverid。不要和以下的从服务器冲突就可以

    server-id=1

    在文件最后方加入:

    [mysqld_multi]
    mysqld = /usr/bin/mysqld_safe
    mysqladmin = /usr/bin/mysqladmin
    user = root
    password = root

    #第二个mysql实例的配置

    [mysqld1]
    socket = /tmp/mysql1.sock
    port = 3311
    pid-file = /var/run/mysqld/mysqld1.pid
    log-slow-queries = /var/log/mysql1/slow-query-log ## mysql slow log
    relay-log = /var/spool/mysqld1/mysqld-relay-bin ## relay for replication
    datadir = /var/lib/mysql1 ## mysql data file folder
    user = mysql
    log-bin
    server-id=2

    保存退出之后运行
    mysql_install_db –user=mysql –datadir=/var/lib/mysql1
    完毕第二个实例的初始化

    启动该实例服务的方式为:
    mysqld_multi start 1

    使用命令查看3311port是否开启
    netstat -tunlp
    假设有则启动成功

    登陆改实例
    mysql -S /tmp/mysql1.sock -uroot -p

    改动root密码也要指定sock文件:
    mysqladmin -S/tmp/mysql1.sock -u root -p password “root”

    这里用mysql -uroot -p -P3311登陆进去的还是默认的3306port。所以使用上面的方式登陆

    进去之后能够使用
    show variables like ‘%datadir%’;
    查看datadir是否是配置文件里的路径

    3、配置主从复制

    进入主数据库(默认的3306port)
    mysql -uroot -proot

    查看用户登陆信息
    select user,host from mysql.user;

    设置root用户能够从不论什么地方登陆訪问不论什么表
    grant all on . to root@’%’ identified by ‘root’ with grant option;、

    新建一个用户backup用来给从数据库登陆。获取主数据库信息,密码也是backup(这里设置的登陆地址为localhost,假设从数据库在别的机器上须要改动为相应的IP)
    GRANT REPLICATION SLAVE ON . to ‘backup’@’localhost’ identified by ‘backup’;

    使用
    show variables like “%log_%”;
    查看二进制日志是否开启(配置文件里的log-bin),要使用主从复制一定要开启这个

    使用
    show master status;
    查看主数据库信息
    File和Position
    这两个信息会在配置从数据库的时候用到

    进入从库,运行下列命令进行主库信息配置

    change master to master_host=’localhost’,master_user=’backup’,master_password=’backup’,master_log_file=’mysqld-bin.000003’,master_log_pos=107;

    master_host:主库地址(假设不是默认的3306能够使用master_port指定port信息)
    master_user:上面配置的从库登陆主库的用户
    master_log_file:即主库show master status;中File的值
    master_log_pos:即主库show master status;中Position的值

    出现下列错误信息:
    ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log

    解决方法:

    stop slave;
    reset slave;
    再次错误:
    ERROR 29 (HY000): File ‘/var/spool/mysqld1/mysqld-relay-bin.index’ not found (Errcode: 13)

    创建相应的文件并改动权限
    sudo mkdir var/spool/mysqld1
    sudo touch /var/spool/mysqld1/mysqld-relay-bin.index
    sudo chown -R mysql:mysql /var/spool/mysqld1/

    再次reset slave就可以

    开启从库
    start slave;

    查看状态信息
    show slave statusG

    当中的
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    两个必须都为Yes才是成功

    若当中提示错误:
    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids

    则是serverid没配好。能够直接用命令改正

    查看当前的server_id
    show variables like ‘server_id’;
    又一次设置为其它值
    set global server_id=2;

    在又一次启动slave就可以

    接下来就能够做一些測试工作了,在主库上建立新数据库或者新表或者加入改动记录都会同步到从库中

    4、mysql其它一些异常的解决方法

    使用mysql出现以下错误:
    mysqladmin: Can’t turn off logging; error: ‘Access denied; you need the SUPER privilege for this operation’的错误

    解决方法:
    vim /etc/my.cnf

    加入
    skip-grant-tables
    重新启动服务

    进入mysql

    use mysql;
    UPDATE user SET Password = password ( ‘pwd’ ) WHERE User = ‘root’ ;
    flush privileges ;

    退出之后
    my.cnf改回来
    重新启动服务

    假设没有效果的话
    卸载mysql:

    卸载yum -y remove mysql*
    查看是否安装yum list installed mysql*
    删除mysql相关文件夹
    rm -rf /etc/my.cnf
    rm -rf /var/lib/mysql

    之后又一次安装mysql

    远程登录:
    出现错误
    Host ‘117.29.168.34’ is not allowed to connect to this MySQL server

    解决方法:
    root登陆mysql
    运行:
    use mysql;
    update user set host = ‘%’ where user=’root’;
    flush privileges;

  • 相关阅读:
    Java中ArrayList和LinkedList区别
    poi操作excel之: 将NUMERIC转换成TEXT
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    CollectionUtils.select用法
    名词解释
    jenkins
    代码测试文章推荐
    redis 参考文章
    zookeeper,dubbo,dubbo admin
    Navicat For Mysql快捷键
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7224932.html
Copyright © 2011-2022 走看看