安装部分
创建用户和组
由于采用直接初始化方式所以用户不会自动创建需要为mysql手动创建用户与组;
创建组
groupadd mongodbtest
创建用户
useradd mongodbtest -g mongodbtest
建立mysql文件夹与上传文件
建立mysql安装文件夹。使用根目录下的app文件夹
mkdir /app
上传并解压文件再重命名文件
修改my.cnf文件
备份系统原有的my.cnf文件
mv /etc/my.cnf /etc/my.cnf.bak
新建my.cnf文件内容为
[client]
socket=/usr/local/src/mysql/mysql/mysql.sock
[mysqld]
port=3306
lower_case_table_names=1
basedir=/app/mysql
datadir=/app/mysql/data
pid-file=/app/mysql/mysql.pid
socket=/app/mysql/mysql.sock
log_error=/app/mysql/error.log
修改文件夹权限
chown -R mongodbtest:mongodbtest /app/mysql/
初始化mysql
/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mongodbtest -- basedir=/app/mysql --datadir=/app/mysql/data
查看临时密码
cat /app/mysql/error.log |grep -i "password"
创建连接(可以不做)
ln -s /app/mysql/mysql.sock /tmp/mysql.sock
# 更改连接权限
chown -R mongodbtest:mongodbtest /tmp/mysql.sock
启动服务
/app/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mongodbtest &
连接与修改数据库密码
/app/mysql/bin/mysql -uroot -p
输入密码不会显示,输入刚才看到的临时密码
修改密码:
set password for 'root'@'localhost' = password('123456');
刷新权限:
flush privileges;
退出数据库:
quit;
修改数据库登录权限
打开mysql库
use mysql;
查看用户与登录限制
select user,host from user
修改可登录用户的主机IP
update user set host='%' where user='root';
grant all privileges on *.* to root@'%';
刷新权限
flush privileges;
设置root用户任意主机名和IP登录时的密码
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY
'123456';
刷新数据用户权限
flush privileges;
关闭数据库
/app/mysql/bin/mysqladmin -uroot -p shutdown
Enter password:输入密码(不显示)
出现问题
安装时不出现 sock文件。重新初始化即可。mysql中文件夹会自动创建不需要手动新建。
双主同步
注意
同步前一定要关闭数据库
关闭命令在bin目录下运行
./mysqladmin -uroot -p shutdown
输入密码即可关闭
例如
主:master 10.10.10.1 从:slave 10.10.10.2
这里只是称之为主从,实际搭建是双主。
主库
修改my.cnf文件
主:master
增加如下内容
relay-log=/app/mysql/data/relay-bin
relay-log-info-file=/app/mysql/data/relay-log-info
log-bin=/app/mysql/data/mysql-bin
server-id=101
binlog-do-db=test #同步的库
binlog-ignore-db=mysql
replicate-do-db=test #同步的库
replicate-ignore-db=mysql #不同步的库
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
其中replicate-do是要同步的库,binlog-do是要同步库的日志。
启动数据库
在mysql的bin目录下运行
./mysqld_safe --defaults-file=/etc/my.cnf --user=mongodbtest &
其中 file指向my.cnf文件 user是建立mysql的用户
连接数据库
/bin/mysql -uroot -p
输入密码
授权同步用户
grant replication slave,file on *.* to 'root'@'%';
flush privileges;
备份数据库
由于在同步前已经建立的数据库无法进行同步建表操作,所以需要进行一致性备份。
mysqldump -uroot -h10.10.10.1 --flush-logs --master-data=2 --routines --triggers
--events --lock-tables --databases test -p > test_date.sql
其中h为本机的ip地址 test为备份的库名 test_date.sql 为备份的文件
锁表
flush tables with read lock\G
查看master值
show master status\G
记录输出的内容
主要记录File和Position值
File: mysql-bin.000001
Position: 510
从库
编辑my.cnf文件
添加
relay-log=/app/mysql/data/relay-bin
relay-log-info-file=/app/mysql/data/relay-log-info
log-bin=/app/mysql/data/mysql-bin
server-id=102
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
其中replicate-do是要同步的库,binlog-do是要同步库的日志。
启动数据库
/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mongodbtest &
连接数据库
/app/mysql/bin/mysqld -uroot -p
输入密码(不显示)
授权
grant replication slave, file on *.* to 'root'@'%';
-- 刷新权限
flush privileges;
关闭二进制日志
set sql_log_bin=OFF;
恢复数据库
mysql -uroot -p -S /app/mysql/mysql.sock
test<test_date.sql
test是要恢复的表名称 test_date.sql是要恢复的文件
锁表
flush tables with read lock\G
记录master值
show master status\G
主要记录File和Position的参数值
File: mysql-bin.000001
Position: 510
开启二进制日志
set sql_log_bin=ON;
同步配置
主:master
连接数据库输入
-- 输入同步信息
change master to
-- 从slave的ip
master_host='10.10.10.2',
-- 从slave的mysql端口
master_port=3306,
-- 从slave的同步用户
master_user='root',
-- 从slave同步用户的密码
master_password='123456',
之前记录的File和Position的参数值
master_log_file='mysql-bin.000004',
master_log_pos=534;
执行后输出 Query OK, 0 rows affected (0.01 sec) 便为成功
开启同步
start slave;
从:slave
进行相同操作
change master to
master_host='10.10.10.1',
master_port=3306,
master_user='root',
master_password='123456',
master_log_file='mysql-bin.000004',
master_log_pos=542;
执行后输出 Query OK, 0 rows affected (0.01 sec) 便为成功
开启同步
start slave;
查看是否同步
show processlist\G;
查看server_id是否和配置文件中的一致
show variables like 'server_id';
开始同步
两个库全部执行
-- 取消锁表
unlock tables;
show slave status\G;
查看 Slave_IO和Slave_SQL是否为yes[^错误]
同步测试
建立同步的表
CREATE TABLE IF NOT EXISTS `A`( `id` INT UNSIGNED AUTO_INCREMENT
PRIMARY KEY, `name` VARCHAR(100) NOT NULL);
插入数据
INSERT INTO A(name) values('test1');
查询数据
SELECT * FROM A;
查询库
show databases;
打开库
use test;
test为库名
查询表
show tables;
查询字段
select * from table_name;
标签:bin,同步,log,--,app,MySQL,master,mysql,安装 From: https://www.cnblogs.com/u1s3/p/16874465.html关闭防火墙命令: systemctl stop firewalld.service
启动防火墙: systemctl start firewalld.service
行开机禁用防火墙自启命令 : systemctl disable firewalld.service
防火墙随系统开启启动 : systemctl enable firewalld.service