Size: a a a

2020 June 08

NI

Nickolay Ihalainen in ru_mysql
Alexander
Коллеги, вопрос по архивации/партицированию таблиц, выделению партиций в отдельный тейблспейс, какова бест практис?
горячие/холодные данные раскидывать, вместо симлинков
источник

A

Alexander in ru_mysql
не очень понял, или не в теме: есть огромная партицированная  таблица, пока она на "быстром" носителе, но так как она растёт скоро места нехватит, есть "медленное" хранилище, можно ли переместить отдельно старые партиции на "медленное" хранилище, оставив актуальные на "быстром"?
источник

В

Вячеслав in ru_mysql
Добрый день.

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

Кто-нибудь получал такое предупреждение?

P.S. 8.0.19-10 Percona Server
источник

NI

Nickolay Ihalainen in ru_mysql
долгие данные хранят чтобы потом агрегированную статистику можно было пересчитать. Последние 2-3 партиции можно объединять с табличками в которых мы sum,count уже подчитали для предыдущих месяцев.  Последние 2-3 партиции горячие, мы в них часто пишем и читаем. Остальные данные - мёртвый груз, но на всякий случай мы их можем держать
источник

NI

Nickolay Ihalainen in ru_mysql
Вячеслав
Добрый день.

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

Кто-нибудь получал такое предупреждение?

P.S. 8.0.19-10 Percona Server
gtid == идентификатор состояния базы для всех табличек и строчек не должно быть одинакового gtid при разных строчках на разных серверах или бекапах.
источник

NI

Nickolay Ihalainen in ru_mysql
если мы не дампим чего-то, это на страх и риск, что потом востановление point-in-time или слейв не развалится
источник

A

Alexander in ru_mysql
Nickolay Ihalainen
долгие данные хранят чтобы потом агрегированную статистику можно было пересчитать. Последние 2-3 партиции можно объединять с табличками в которых мы sum,count уже подчитали для предыдущих месяцев.  Последние 2-3 партиции горячие, мы в них часто пишем и читаем. Остальные данные - мёртвый груз, но на всякий случай мы их можем держать
имено так, как раскидывать то? есть ли штатный инструмент? как отделять данные партиций и выносить их во вне?
источник

AK

Andrey Kolkov in ru_mysql
Ребят, а сколько небольших таблиц можно джойнить без особых проблем?
источник

NI

Nickolay Ihalainen in ru_mysql
Alexander
имено так, как раскидывать то? есть ли штатный инструмент? как отделять данные партиций и выносить их во вне?
через alter table reorganize partition указывая data directory. Т.е. general tablespaces для партиций выпилили в 5.7.24 и 8.0.13.
источник

A

Alexander in ru_mysql
о, круто
источник

В

Вячеслав in ru_mysql
Nickolay Ihalainen
если мы не дампим чего-то, это на страх и риск, что потом востановление point-in-time или слейв не развалится
А как настроить правильную репликацию всех БД с GTID, используя mysqldump?

Я делал так:

  MSQL="mysql --defaults-file=${mysql_defaults_file}"
 MSQLDMP="mysqldump --defaults-file=${mysql_defaults_file}"

 ${MSQLDMP} -h"${master_ip_address}" \
   --all-databases \
   --insert-ignore \
   --skip-lock-tables \
   --single-transaction=TRUE \
   | ${MSQL} -h"${replica_ip_address}"


Содержание my.cnf:

server-id = ${serverID}
gtid-mode = ON
enforce-gtid-consistency = ON
binlog-format = ROW
binlog-checksum = CRC32
relay-log = /var/log/mysql/mysql-relay-bin
log-bin = /var/log/mysql/mysql-bin
log-slave-updates = ON
master-info-repository = TABLE

И получил Warning...
источник

A

Alexander in ru_mysql
Nickolay Ihalainen
через alter table reorganize partition указывая data directory. Т.е. general tablespaces для партиций выпилили в 5.7.24 и 8.0.13.
а теперь не православный вопрос, а у mariadb случайно не знаете как с этим дела обстоят?
источник

NI

Nickolay Ihalainen in ru_mysql
Alexander
а теперь не православный вопрос, а у mariadb случайно не знаете как с этим дела обстоят?
general tablespaces нет, через alter data directory для таблички не указать, надо смотреть как с reorganize сработает... https://mariadb.com/kb/en/create-table/#data-directoryindex-directory
источник

D

Daria in ru_mysql
Добрый день! Запись в mysql есть, но изза разницы кодировок  (так получилось) там всякие иероглифы  (именно в phpmyadmin) а при выборе этой записи выводит null (видимо из-за каких-то символов именно в этой записи потому как с такими же выводит норм) как раскодировать эти иероглифы в phpmyadmin или как-то вывести эту запись.
источник

A

Alexander in ru_mysql
Nickolay Ihalainen
general tablespaces нет, через alter data directory для таблички не указать, надо смотреть как с reorganize сработает... https://mariadb.com/kb/en/create-table/#data-directoryindex-directory
там похоже бага висит https://jira.mariadb.org/browse/MDEV-14618
источник

NI

Nickolay Ihalainen in ru_mysql
Вячеслав
А как настроить правильную репликацию всех БД с GTID, используя mysqldump?

Я делал так:

  MSQL="mysql --defaults-file=${mysql_defaults_file}"
 MSQLDMP="mysqldump --defaults-file=${mysql_defaults_file}"

 ${MSQLDMP} -h"${master_ip_address}" \
   --all-databases \
   --insert-ignore \
   --skip-lock-tables \
   --single-transaction=TRUE \
   | ${MSQL} -h"${replica_ip_address}"


Содержание my.cnf:

server-id = ${serverID}
gtid-mode = ON
enforce-gtid-consistency = ON
binlog-format = ROW
binlog-checksum = CRC32
relay-log = /var/log/mysql/mysql-relay-bin
log-bin = /var/log/mysql/mysql-bin
log-slave-updates = ON
master-info-repository = TABLE

И получил Warning...
single-transaction не гарантирует, что myisam не меняется или новая табличка не будет создана во время бекапа. Т.е. нет блокировки
источник

A

Alexander in ru_mysql
в ней же есть воркэраунд, но я не уверен, как потом объединять таблицу, делать view на union, а будут ли при этом задействованны индексы и тд?
источник

В

Вячеслав in ru_mysql
Nickolay Ihalainen
single-transaction не гарантирует, что myisam не меняется или новая табличка не будет создана во время бекапа. Т.е. нет блокировки
блокировка делается в отдельной сессии:

FLUSH TABLES WITH READ LOCK;

Но вопрос не в этом
источник

NI

Nickolay Ihalainen in ru_mysql
Alexander
в ней же есть воркэраунд, но я не уверен, как потом объединять таблицу, делать view на union, а будут ли при этом задействованны индексы и тд?
я бы пробовал делать exchange с табличкой без партиций, потом альтер таблички и exchange обратно...
источник

NI

Nickolay Ihalainen in ru_mysql
Вячеслав
блокировка делается в отдельной сессии:

FLUSH TABLES WITH READ LOCK;

Но вопрос не в этом
выглядит диковато, может работать, можно и косячнуть, чем не нравится бекап без single-transaction или через xtrabackup?
источник