文章目录
一、SRC
二、须知
1. mysql的配置文件默认都是以/usr/local/mysql为安装路径的,但有些场景需要自定义mysql的安装路径,所以安装过程中需要额外设置
2. my.cnf的[mysqld_safe]是用来安全启动的,一般用不到,可以不设置
三、目录和用户规划
mysql 解压文件
binlog 同步日志
safeerrorlog 安全启动的errorlog
backup
tmp
用户要使用mysql:mysql,给以上所有目录和设置权限和主组。亲测,有的节点父目录是root:root也可以,有的节点父目录是root的主就不行。==》 在根目录下创建/mysql,然后在里面创建mysql,binlog,safeerrorlog,backup,tmp目录。然后修改主组,设置权限。
四、process
1. 解压
2. 修改/etc/my.cnf
3. 修改./support_fiels/mysql.server
4. 将mysql.server复制到/etc/init.d/下的名为mysql的文件中
5. 初始化
6. 启动mysql
7. 连接mysql,修改密码,重启,设置root用户可以从任意ip连接
五、主从备份
须知
{1} 主从备份需要在主从都没插入数据之前做,如果在已经有数据的mysql之间进行出从备份,需要手动将主的数据导出,手动导入到从节点,然后主从备份才能成功
{2} 从库不需要创建库、表、用户
1. 配置主库
{1} /etc/my.cnf
server-id要求所有mysql不重复,一般用ip的末段
log-bin就是binlog也就是同步日志的位置,一般会放在提前规划好的目录
{2} 主库创建同步用户,授权。从库不需要创建用户,只需要设置同步
{3} 重启
{4} 查看状态,记录2个值
2. 配置从库
{1} /etc/my.cnf
{2} 设置同步,用sql设置
{3} 开启同步 start slave
{4} 查看状态
如果Slave_IO_Running和Slave_SQL_Running都为Yes,则表示同步成功
3. prb
{1} 粗心导致mysql启动报错
配文中有些key写错,主从配置写在了[mysql_safe]下,应该是[mysqld]下
{2} 在主库有数据的情况下跟没数据的从库同步
[1] 这种情况下,从库执行show slave status \G;
会显示Slave_SQL_Running为No
且会报如下错误,注意会有end_log_pos 的位置,记录这个位置
Last_SQL_Error: Could not executeUpdate_rows event on table eip_fileservice.T_FILE_LOCATION; Can’t find recordin ‘T_FILE_LOCATION’, Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; theevent’s master log master1-bin.001025, end_log_pos 713922982
[2] process
(1)把主库的数据导出为本地文件
(2)再把这些文件scp到从节点,导入到mysql
(3)然后start slave开启同步,
https://blog.csdn.net/yabingshi_tech/article/details/51005854
这里遇到个问题,因为主库有个字段是timestamp,导出时是一个值,插入到从库时又是另外一个值。而执行同步时update 语句的where是按照主库的值。需要使用手动把这条sql的update语句的where条件设置为从库的值。
mysqlbinlog -v --stop-position=上面记录的错位日志位置 linlog位置
mysqlbinlog -v --stop-position=713922982 /mysql_data1/mysql/master1-bin.001025
把上面提到的Update语句的where条件手动改一下,然后重启slave,然后在show slave status \G;