mysql 主从同步实验细解

简介:

centos6.8安装mysql5.7

环境:

master:172.17.165.245

slave   :172.17.165.230

mysql 版本:mysql5.7

安装前准备

下载rpm文件

wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm

安装mysql 的yum 源


rpm -Uvh mysql57-community-release-el6-9.noarch.rpm
或者
yum localinstall -y mysql57-community-release-el6-9.noarch.rpm  
安装成功后在/etc/yum.repos.d/会多出几个mysql源

主服务器进行配置

1.yum 进行安装

yum install mysql-community-server -y

2.启动数据库


[root@iZ2zegc312qxcxs61cotxlZ ~]# /etc/init.d/mysqld  start
Initializing MySQL database:                               [  OK  ]
Starting mysqld:                                           [  OK  ]

3.查看root 超级密码

[root@iZ2zegc312qxcxs61cotxlZ ~]# grep 'temporary password' /var/log/mysqld.log
2018-02-06T05:39:06.661693Z 1 [Note] A temporary password is generated for root@localhost: a;HrlAlBh6Hk

3.修改mysql 用户密码

mysql> show databases;
ERROR 1820 (HY000): Unknown error 1820
报错:MySQL5.7 加强了安全保障,以上意思是密码不符合安全策略要求,我们输入一个8位或以上长度,复杂一点的密码。
查看mysql5.7的密码策略报错是密码过期
mysql配置文件my.ini的mysqld下面添加一句default_password_lifetime=0重启mysql服务就行了

mysql> alter  user 'root'@'%' identified by '#20as3SElksds0ew98';
Query OK, 0 rows affected (0.00 sec)

开启远程链接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '#20as3SElksds0ew99' WITH GRANT OPTION;

FLUSH PRIVILEGES;

4.修改配置文件my..cnf

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set = utf8mb4

[mysql]
prompt="MySQL [\d]> "
no-auto-rehash

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock

basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1

binlog-do-db = kanfa_news_dev #同步数据库
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema

init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4

skip-name-resolve
#skip-networking
back_log = 300

max_connections = 5360
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 1024
max_allowed_packet = 500M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 128M

read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 256M

thread_cache_size = 64

query_cache_type = 1
query_cache_size = 64M
query_cache_limit = 2M

ft_min_word_len = 4

log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 7

log_error = /data/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/mysql-slow.log

performance_schema = 0
explicit_defaults_for_timestamp

#lower_case_table_names = 1

skip-external-locking

default_storage_engine = InnoDB
#default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 1024M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1

interactive_timeout = 28800
wait_timeout = 28800

[mysqldump]
quick
max_allowed_packet = 500M

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M


重新启动数据库
mysqladmin -uroot -p shutdown  #(一定要使用这句)


查看二进制日志状态
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.00 sec)
查看用户
mysql> use mysql;
mysql> select Host,User from user ;
+-----------+---------------+
| Host      | User          |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
3 rows in set (0.00 sec)

5.创建需要同步的数据库及用户;

mysql> create database kanfa_news_dev;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '#IjRpey35FDrFB2dp';

6.授权从服务器用户可以登录(主库创建用户  可以登录到从库上面)

grant replication slave on *.* to slave@'%' identified by "#IjRpey35FDrFB2dp";

7 查看master 数据库状态


mysql> show master status;
+-------------------------+----------+--------------+------------------+-------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-master.000001 |      154 | HA           | mysql            |                   |
+-------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

从服务器进行安装配置

1.从服务安装mysql

2.修改配置文件,与主相同 server-id = 2

3.从服务器登录数据测试链接是否成功

[root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# mysql -uslave -p -h172.17.165.245
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.7.21-log MySQL Community Server (GPL)

4.从数据库root密码

root@iZ2zejbqrpwrmr4mjy0u9fZ ~]# grep 'temporary password' /var/log/mysqld.log
2018-02-06T07:46:31.989937Z 1 [Note] A temporary password is generated for root@localhost: fl54e1_FBAq8
mysql>alter  user 'root'@'%' identified by '#20as3SElksds0ew99';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> SET PASSWORD = PASSWORD('#20as3SElksds0ew99');
Query OK, 0 rows affected, 1 warning (0.00 sec)

5.告知从数据库二进制日志文件位置(从库上面执行)

mysql> change master to MASTER_HOST='172.17.165.245', MASTER_USER='slave',MASTER_PASSWORD='#IjRpey35FDrFB2dp',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=154;

6.开启从数据库

mysql>start slave;

7.查看master、slave状态

mysql> show master status;
+-------------------------+----------+--------------+------------------+-------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------------+----------+--------------+------------------+-------------------+
| mysql-bin-master.000001 |     1573 | kanfa_news_dev           | mysql            |                   |
+-------------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysql> show slave status\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                 Master_Host: 172.17.165.245
                 Master_User: slave
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin-master.000001
         Read_Master_Log_Pos: 1573
              Relay_Log_File: iZ2zejbqrpwrmr4mjy0u9fZ-relay-bin.000002
               Relay_Log_Pos: 1062
       Relay_Master_Log_File: mysql-bin-master.000001
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes
             Replicate_Do_DB:
         Replicate_Ignore_DB:
  #当看到Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常



注意:

       当同步数据库的时候,需要先把主上面的数据库备份到从库上面,然后停止从  stop slave  导入数据库,然后启动从,插入数据进行核实。


本文转自 Innocence_caosm 51CTO博客,原文链接:http://blog.51cto.com/innocence/1963300,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
1721 0
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
507 5
|
9月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
9月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
702 90
|
监控 关系型数据库 MySQL
Flink CDC MySQL同步MySQL错误记录
在使用Flink CDC同步MySQL数据时,常见的错误包括连接错误、权限错误、表结构变化、数据类型不匹配、主键冲突和
481 17
|
消息中间件 canal 关系型数据库
Maxwell:binlog 解析器,轻松同步 MySQL 数据
Maxwell:binlog 解析器,轻松同步 MySQL 数据
1437 11
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
556 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
SQL 存储 关系型数据库
Mysql主从同步 清理二进制日志的技巧
Mysql主从同步 清理二进制日志的技巧
173 1
|
关系型数据库 MySQL Linux
mysql 主从同步 实现增量备份
【8月更文挑战第28天】mysql 主从同步 实现增量备份
262 3
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多