[MDEV-9353] feature request: binlog ignore table Created: 2016-01-04 Updated: 2017-05-29 |
|
| Status: | Open |
| Project: | MariaDB Server |
| Component/s: | Replication |
| Fix Version/s: | None |
| Type: | Task | Priority: | Minor |
| Reporter: | Alex | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 4 |
| Labels: | None | ||
| Description |
|
Hello, This can save on traffic + ease on slaves that need to replicate just few tables but have to download gigabytes of binary logs and slow down because replaying it takes time. So maybe instead of ignoring certain tables on slave it's possible to let the master avoid creating binlog with it? At this moment I have to manipulate with rewrite-db to let something replicate to a different database and avoid that db from appearing in binlogs. Probably this won't work with statement log format, but row replication should do the thing imo. Anyway this can be left to dba/sysadmin to decide Hope you find it interesting and possible to implement p.s. alternatively it could be a feature for maxscale binlog proxy to let certain slaves download only relevant parts..or something like that |
| Comments |
| Comment by Michael Widenius [ 2016-04-05 ] |
|
Do you mean that in addition to the current --binlog-ignore-db=database_name option, you would also want to see an option --binlog-ignore-table=database.table" ? Or would you like to have an create option that a table is not logged ? This is something that can safely be done only with row level replication. |
| Comment by Alex [ 2016-04-05 ] |
|
Hi Michael, As I explained - I solved it by different manipulations using rewrite-do-db and splitting databases. Maybe it's an offtopic for this very JIRA issue but that also comes as a result from inability to manipulate with tables in binary logs. I have now 2 databases (because of the aforementioned reasons). 1st database has around 500gbytes/day and no binary logs. The problem I faced here is inability to use 'set sql_bin_log=0' on app level (this to fill those tables in 2nd database). It can be set only by user with SUPER privileges. Nobody will set this privilege to an app user that should (usually) perform only select/insert/delete/update. Flush privileges (and using hardlinks) gave me the desired solution, but I don't like it much. So I wanted to ask if you ever reconsidered introducing additional permission or just letting a regular user set sql_bin_log. I know it's kinda a dangerous thing for production, but there are many other dangerous things for production (wrong permission , port 3306 open worldwide and so on). I wouldn't say it's more dangerous than any other thing that's missed. So why to keep giving this special attention? Thanks! (And sorry again if that's offtopic) |
| Comment by Alex [ 2016-04-05 ] |
|
Now I think I understand what you meant by "Or would you like to have an create option that a table is not logged ?" thanks again! |