zoukankan      html  css  js  c++  java
  • mysql 做互为主备同步数据

    1.安装mysql数据库

    这里就不做赘述了。

    我是复制的数据库。

    同事复制了 /etc/my.cnf 文件,和 /etc/rc.d/init.d/mysqld文件。

    在启动中遇到了一些问题,自己记录一下,不做解决问题追溯。

    首先是 mysql用户组添加。

    命令: groupadd mysql

    useradd mysql -g mysql

    然后文件权限的问题没有搞懂,网上有很多借鉴的例子,可以看一下。

    其次是数据库初始化。

     命令:./scripts/mysql_install_db --user=mysql

    最后启动成功,但是登陆的时候报 找不到 /tmp/mysql.sock.

    发现没有配置这个目录,而且[mysqld] 底下也指定了mysql.sock的路径。

    根据别的文章,添加了 [client] [mysql] 分别添加了sock的指向路径,重启服务,登陆成功。

    在初始无密码状态登陆,在[mysqld] 下添加 skip-grant-tables,可成功登陆。

    查看user表:use mysql

    select * from user G;

    删除空用户:delete from user where user='';

    添加用户:create user root identified by '123456';

    授权用户:grant all privileges on *.* to 'root'@'%'identified by '123456' with grant option;

    刷新权限:flush privileges;

    退出后,再登陆就需要密码,并且远程访问成功。

    这一步我是添加的root用户,并且授全部权限,没有修改其他root用户登陆权限为% 。

    为的是如果不需要远程访问,就把% 权限的root删除了。自我偷懒模式。

    2.配置主从关系。

    2.1主库配置:

    修改/etc/my.cnf 在[mysqld]下添加

    server-id=1 
    log-bin=master-bin 
    log-bin-index=master-bin.index 

    log_bin_trust_function_creators=1

    #binlog-do-db =mysql_test 指定同步mysql_test数据库
    保存后重启mysql(service mysql restart;)

    进入mysql,查看主服务mysql master状态,记录File为master-bin.000001,Position为107,后面会使用。

    2.2配置从服务器:

    修改/etc/my.cnf 在[mysqld]下添加

    server-id=10 
    log-bin=master-bin 
    log-bin-index=master-bin.index

    log_bin_trust_function_creators=1

    2.3 从服务器连接主服务器:

    change master to 
    master_host=’主服务器ip’,

    #master_port=3306, 端口,可不写默认3306,看个人需求
    master_user=’root’, 
    master_password=’123456’, 
    master_log_file=’master-bin.000001’, 
    master_log_pos=107;

    启动slave:mysql  > start slave;

    查看状态: mysql > show slave statusG

    其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

    自此主从关系就构建好了。

    在此基础上,可以搭建互为主备。具体过程类似。

    3.在跑数据的时候遇见一些问题

    从库先插入数据,主表再插入,自增字段可能会冲突,导致报错。

    我的处理比较粗暴。在[mysqld] 下加入 slave-skip-errors=all,忽略所有错误。这种只适合demo,不适合生产,勿学。

    或者可用,slave-skip-errors=1062 指定跳过1062错误。slave-skip-errors=1032,1062 指定跳过这俩错误。

    更多解决问题方式参见:

    https://www.jb51.net/article/109107.htm

  • 相关阅读:
    centos 修改语言、时区
    去除 ufeff
    Docker介绍及使用
    消息队列
    数据结构与算法
    Haystack
    Python面向对象之魔术方法
    关于Redis处理高并发
    Redis
    RESTful规范
  • 原文地址:https://www.cnblogs.com/zhanghao1799/p/10608061.html
Copyright © 2011-2022 走看看