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 status\G

其中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

 

posted @ 2019-03-27 15:46  阿七o0  阅读(607)  评论(0编辑  收藏  举报