您的位置:首页 > 数据库 > MySQL

mysql 安装,重设密码,主从库配置

2017-07-07 12:12 169 查看
环境:

系统 centos EL6

mysql : 5.7.18

最近要给存储在mysql中大量的数据,做个从库,防止机器挂了,数据丢失。

安装

1 添加 MySQL Yum Repository

下载 MySQL Yum Repository http://dev.mysql.com/downloads/repo/yum/

2 安装 MySQL Yum Repository

yum localinstall mysql57-community-release-el6-{version-number}.noarch.rpm


当然如果是centos的其他环境,安装方法类似,只是install 后面的名称有变化。

3 选择正式发布的版本

yum repolist all | grep mysql


会列出所有的跟mysql相关的发布版本。包括是否是enable状态。并且可以更改其状态。

命令类似

yum-config-manager --disable mysql57-community


4 安装

yum install mysql-community-server


5 启动mysql服务

service mysqld start


以上具体更详细内容见官网(参考文章中)。

安装完 mysql 后,还要进行些配置,如mysql 存储目录等,具体可见网上的资料。

2 重设密码

1 修改配置文件my.cnf, 在 [mysqld] 下面添加 skip-grant-tables

vim /etc/my.cnf


[mysqld]
skip-grant-tables


2 重启mysql

service mysqld restart


or

service mysqld  stop
service mysqld start


3 无密码登录 mysql shell

mysql -u root


4 重设密码

网上很多的方法建议直接

update MySQL.user set password=PASSWORD('新密码') where User='root';


但是行不通,

也有人建议使用
alter user
的方法,但是执行的时候会报错。需要重新加载grant tables。

执行命令进行加载

flush privileges;


然后重新设置密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';


有人说不同版本只见使用的方法不一样。

有的执行:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');


or

update MySQL.user set password=PASSWORD('新密码') where User='root';


then

flush privileges;


去掉之前在my.cnf中添加的配置。重启 mysql。

可参考后面的文章

主从库配置

主库配置 master

针对机器 1 上的 mysql

1 修改 mysql 配置文件

在 [mysqld] 下面添加一下字段的配置;

server-id

log_bin

binlog_do_db

例如

server-id = 1
log_bin = /data/mysql/mysql-bin.log
binlog_do_db = data


其中,

server-id :必须是唯一的,如果有多个从库,每个从库之间这个值不一样,并且还有主库的不一样。

log_bin: 记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;作用:可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、MySQL的复制(主主数据库的复制、主从数据库的复制)(copied)。

binlog_do_db: 要复制数据的数据库名,如果有多个库,可以写多行。

2 创建与从库关联的帐号

重启msysql

service mysqld restart


登录shell

mysql -uroot -p


创建用户

create user "slave"@"%" identified by "code";


授权:

数据库data中的所有表

grant all privileges on data.* to "slave"@"code";


flush privileges;


授权主库权限

grant  replication slave on data.* to "salve"@"%";


查看主库状态

show master status;


output like

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 | newdatabase  |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


后面配置从库中会用到此数据。

flush privileges;


如果需要将主库中的数据导出

mysqldump -u root -p --opt data > /path/to/data.sql


从库配置 slave

1 创建库以及导入数据

登录mysql shell, 创建要同步的的数据库,库名与主库master同步库名相同

create database data;


如果需要导入主库导出的数据

mysql -uroot -p data < /path/to/data.sql


2 配置从库

添加一下配置

server-id=29

relay-log = /data/mysql/mysql-relay-bin.log
log_bin = /data/mysql/mysql-bin.log
binlog_do_db = data


重启 从库 mysql

service mysql restart


进入msyql shell 进行主库复制设置

CHANGE MASTER TO MASTER_HOST='12.34.56.789',MASTER_USER='slave', MASTER_PASSWORD='code', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=  107;


MASTER_HOST 为主库所在机器的 ip

MASTER_LOG_FILE, MASTER_LOG_POS 的值来自前面
show master status
的输出

激活 从库slave

start slave;


如果之前已经启动了slave,先关闭,然后启动。

stop slave


3 查看是否正常同步

在从库中执行

show slave status \G;


如果出现

Slave_IO_Running: Yes
Slave_SQL_Running: Yes


以上两项都是Yes,表示正常同步。

错误

从库中执行

show slave status \G;


出现的结果是

Slave_IO_Running: Yes
Slave_SQL_Running: NO
Last_SQL_Errno: 1062
Last_SQL_Error: Error 'Duplicate entry '5619166' for key 'PRIMARY'' on query.


问题的很明显;

解决步骤

1 从库中执行

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;


然后从新查看状态

show slave status;


或者添加跳过此类错误

在my.cnf 的 [mysqld]中添加

slave-skip-errors = 1062


然后

service mysqld restart


登录 mysql shell

stop slave;
start slave;
show slave status \G;


可见参考文章

参考文章

Installing MySQL on Linux Using the MySQL Yum Repository

https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html

How To Reset Your MySQL or MariaDB Root Password

https://www.digitalocean.com/community/tutorials/how-to-reset-your-mysql-or-mariadb-root-password

How To Set Up Master Slave Replication in MySQL

https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-in-mysql

MySQL replication stop at Last Errno 1062

https://www.techiecorner.com/2572/mysql-replication-stop-at-error-no-1062/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql