• 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

    使用命令查看3311端口是否开启
    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登陆进去的还是默认的3306端口,所以使用上面的方式登陆

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

    3、配置主从复制

    进入主数据库(默认的3306端口)
    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指定端口信息)
    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;

  • 相关阅读:
    javascript 中 "undefined" 与 "is not defined" 分析
    css常用总结
    关于reset.css的疑问:为什么一定要重置浏览器样式?
    一些关于Viewport与device-width的东西~
    JS获取IMG图片高宽
    一个input标签搞定含内外描边及阴影的按钮~
    javascript 取整,取余数
    我刚知道的WAP app中meta的属性
    使用 jquery 获取当前时间的方法
    当前头像跟随着当前内容移动...(修改版)
  • 原文地址:https://www.cnblogs.com/jchubby/p/5449377.html
Copyright © 2020-2023  润新知