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