В этой статье описывается, как использовать go-mysql-elasticsearch для синхронизации информации базы данных mysql с ElasticSearch.
1. Введение в go-mysql-elasticsearch
go-mysql-elasticsearch — это служба, которая автоматически синхронизирует данные MySQL с Elasticsearch.
Сначала он использует mysqldump для получения необработанных данных, а затем поэтапно синхронизирует данные с binlog.
адрес гитхаба:GitHub.com/SID Дон Дон/…
Несколько заметок здесь:
- 1. Бинлог Mysql должен быть в режиме ROW, иначе при запуске будет сообщено об ошибке.
- 2. Полномочия пользователя для подключения к Mysql должны быть больше.
2. Установка
2.1 Установить перейти
установить идти
yum install -y go
установить годеп
go get github.com/tools/godep
Скачать плагин Go-mysql-elastisearch
go get github.com/siddontang/go-mysql-elasticsearch
Введите соответствующий каталог, например следующий каталог, который я использую: /root/go/src/github.com/siddontang/go-mysql-elasticsearch.
cd /root/go/src/github.com/siddontang/go-mysql-elasticsearch
компилировать
make
2.2 Mysql открывает бинлог
Далее вам нужно включить binlog в mysql.Сначала проверьте, включен ли binlog.
введите mysql
mysql -uroot -p
Введите пароль, а затем введите следующую команду, чтобы проверить статус открытия binlog.
show variables like '%log_bin%';
Как показано на рисунке, ON включен, а если не включен, то выключен.
Если он не включен, вам необходимо добавить следующую конфигурацию в конфигурацию my.cnf (где server-id может быть установлен в зависимости от ситуации, здесь установлено значение 1, log-bin — это местоположение журнала, вы должны указать разрешение на запись в лог, иначе будет сообщено об ошибке, binlog_format — это режим, здесь должен быть ROW):
server-id=1
log-bin=/usr/local/mysql-log/mysql-bin.log
binlog_format="ROW"
После завершения настройки перезапустите mysql.
service mysqld restart
Как показано на рисунке, перезагрузка прошла успешно. Если это не удается, вы можете проверить журнал ошибок.Я не буду вводить здесь слишком много.
3. Настройте go-mysql-elasticsearch
Вам нужно настроить go-mysql-elasticsearch.Пример:GitHub.com/SID Дон Дон/…
Содержимое конфигурационного файла, протестированного в этой статье, выглядит следующим образом:
# MySQL 配置:地址,用户名,密码
my_addr = "ip:3306"
my_user = "root"
my_pass = "***"
# Elasticsearch地址
es_addr = "ip:端口"
# 存储数据的位置
data_dir = "./var"
# Inner Http status address
stat_addr = "127.0.0.1:12800"
# pseudo server id like a slave
server_id = 1001
# mysql or mariadb
flavor = "mysql"
# mysql备份文件,如果不设置或设置为空,则跳过
# mysqldump = "mysqldump"
# minimal items to be inserted in one bulk
bulk_size = 128
# force flush the pending requests if we don't have enough items >= bulk_size
flush_bulk_time = "200ms"
# Ignore table without primary key
skip_no_pk_table = false
# MySQL数据源,schema:数据库,tables:表
[[source]]
schema = "test"
tables = ["link_info"]
[[rule]]
schema = "test"
table = "link_info"
index = "test_mysql2"
type = "link_info"
4. Запустите go-mysql-elasticsearch
После завершения настройки запустите go-mysql-elasticsearch.
bin/go-mysql-elasticsearch -config=river.toml
Операция прошла успешно, как показано на рисунке.
5. Осмотр
Вид es-head, как показано на рисунке
Данные существуют, затем измените данные с идентификатором 5, проверьте консоль go-mysql-elasticsearch и, конечно же, изменения отслеживаются, как показано на рисунке.
Во втором представлении es-head, как показано на рисунке, данные также изменились.
6. Резюме
Поскольку я не производился, я оцениваю только свой личный тест, и я чувствую себя очень комфортно с синхронизацией данных, потому что в сочетании с бинлогом можно изменять одновременно. Для онлайн логов мало и неудачно и т.д., это не хвалят.